node.js 我需要能够创建一个全新的 JSON 文件

Posted

技术标签:

【中文标题】node.js 我需要能够创建一个全新的 JSON 文件【英文标题】:node.js I need to be able to create a brand new JSON file 【发布时间】:2020-11-27 06:16:25 【问题描述】:

我正在尝试创建一个新的 JSON 文件。每当我尝试使用 writeFile 函数时,它只是说没有打开这样的目录。 这是我试过的代码。

fs.writeFile('./UserData/' + msg.author + ".json", JSON.stringify(firstSplitContent: firstSplit,secondSplitContent: secondSplit,thirdSplitContent: thirdSplit,fourthSplitContent: fourthSplit,fifthSplitContent: fifthSplit,null,4), err => 
          if(err) throw err;
          console.log("File is created successfully.")
        );

错误:ENOENT:没有这样的文件或目录,打开'./UserData/.json'

帮助将不胜感激。是的,我知道 Windows 不会使用那些特殊字符。我将其切换到 author.id 以删除。

【问题讨论】:

很难阅读,但我是否正确阅读了您正在执行的代码 JSON.stringify(..., null, 4) ?编辑:Nvm,这些是记录的可选参数 json.stringify 变长了。还没有找到一种更简单的方法将其传递给 write 函数。但是 fs 仍然令人困惑,因为我以前从未使用过它。 【参考方案1】:

fs.writeFile 不会创建任何不存在的目录。

我怀疑您路径中的目录 UserData 不存在,这就是您收到该错误的原因。

否则,您的路径可能是错误的。由于您使用的是相对路径,代码将在工作目录中查找UserData 文件夹,即。代码当前正在执行的位置。

如果路径正确,请先尝试创建:

if(!fs.existsSync('./UserData') 
  fs.mkdirSync('./UserData')

或者,您可以使用诸如 fs-extra 之类的包,它使您能够在路径中创建任何尚不存在的文件夹。

如果您想使用fs-extra,这可能是与您最相关的功能: https://github.com/jprichardson/node-fs-extra/blob/master/docs/outputJson.md

【讨论】:

很好的答案!再好不过了 文件夹存在。但是有没有类似的创建json文件的函数呢? 不,你做对了——创建对象,JSON.stringify,然后将其写入扩展名为 .json 的文件。我可以建议您单独创建对象,然后将对象传递给字符串化对象吗?您可以通过适当的缩进在多行中定义它,并且您的代码会更容易阅读 另外,如果该文件夹存在 - 您在正确的目录中吗?由于您使用了相对路径,代码将在代码当前正在执行的目录中查找UserData 文件夹。尝试使用绝对路径,或者从 UserData 所在的目录执行。 路径真的不是问题。这是一些旧代码在做“某事”,仍然不确定。无论如何,fs-extra 模块完全按照我的需要工作!谢谢【参考方案2】:

您应该遵循 Willianm 的回答,但我只注意到一件事:您正在尝试在文件名中使用 msg.author,但这是一个对象(一个非常大的对象),您可能需要考虑将其更改为 @ 987654322@

【讨论】:

以上是关于node.js 我需要能够创建一个全新的 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

从 JSON 文件创建简单的 Node.js API

Node.js JsonParser 自定义函数“无法读取未定义的属性”

Notadd 2.0 全新 Node.js 版本~ (开发中) [从 PHP 到 node 的踩坑记]

Node.js概述

npm中package.json详解

JSON+Node.js - 意外的令牌 o