【问题标题】:node.js I need to be able to create a brand new JSON filenode.js 我需要能够创建一个全新的 JSON 文件
【发布时间】: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 仍然令人困惑,因为我以前从未使用过它。

标签: javascript node.js json discord.js


【解决方案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@

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-08
    • 2021-09-25
    • 2011-08-13
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多