首页 > 解决方案 > Node.js fs.writeFile() 没有创建新文件?

问题描述

我需要为我正在尝试开发的系统创建许多 .json 文件。为此,我在需要的文件名上运行了一个 for 循环,然后使用fs.writeFileSync('filename.json', [data]).

但是,稍后尝试打开它们时,当我尝试在项目文件夹中找到它们时,我无法在任何地方找到它们。

我试过用一个不太复杂的名字写,应该和我的脚本出现在同一个目录中,但这也没有结果。据我了解,即使我的文件名不是我预期的那样,我至少应该在某个地方得到一些东西,但是我最终什么都没有改变。

我当前的代码如下所示:

function addEmptyDeparture(date) {
fs.readFileSync(
        __dirname + '/reservations/templates/wkend_dep_template.json',
      (err, data) => {
        if (err) throw err
        fs.writeFileSync(
            getDepartureFileName(date),
            data
        )
      }
    )
}

function getDepartureFileName(date){
    return __dirname + '/reservations/' +
    date.getFullYear() +
    '/departing/' +
    (date.getMonth() + 1).toString().padStart(2, "0") +
    date.getDate().toString().padStart(2, "0") +
    '.json'
}

data从 fs.readFileSync() 返回并立即写入 fs.writeFileSync() 的 JSON 对象在哪里。我认为我不需要对它进行字符串化,因为它已经是一个 JSON 对象,但我可能错了。

我认为它根本不起作用的唯一原因(而不是根本没有出现在我的项目中)是,在代码的后面部分,我们有这个:

    fs.readFileSync(
        getDepartureFileName(date)
      )
      .toString()

这是因为没有该名称的文件而出现错误的地方。

还值得注意的是,它date是一个有效的日期对象,因为我能够在小提琴中测试该部分。

我对 .json 的效果有什么误解fs.writeFile(),或者这不是编写 .json 文件以在服务器上使用的最佳方式吗?

标签: node.jsjsonfs

解决方案


我尝试使用带有 writeFileSync() 的演示创建类似的案例,使用 for 循环创建不同的文件并将 json 数据添加到这些文件中。就我而言,它有效。每次创建一个新的文件名。这是我的 GitHub:-

var fs = require('fs'); 

// Use readFileSync() method 

// Store the result (return value) of this 
// method in a variable named readMe 
for(let i=0 ; i < 4 ; i++) {
var readMe = JSON.stringify({"data" : i});

fs.writeFileSync('writeMe' + i + '.json', readMe, "utf8");

}

// 存储内容并从 // readMe.txt 读取到文件 WriteMe.txt

让我知道这是否是您最后一直在尝试的。


推荐阅读