Node.js fs.writeFile()无法创建新文件?

时间:2019-09-01 04:48:49

标签: node.js json fs

我需要为我要开发的系统创建许多.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()返回的JSON对象,并立即写入fs.writeFileSync()。我不认为我需要对此进行分类,因为它已经是一个JSON对象,但是我可能是错的。

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

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

这是我没有该名称文件的错误。

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

fs.writeFile()的作用是否引起我的误解,或者这不是编写供服务器使用的.json文件的最佳方法?

2 个答案:

答案 0 :(得分:0)

我尝试使用带有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

让我知道您是否一直在尝试此操作。

答案 1 :(得分:0)

您可能会忘记对数据进行字符串化处理

fs.writeFileSync('x.json', JSON.stringify({id: 1}))