【发布时间】:2020-01-04 16:24:35
【问题描述】:
我需要为我正在尝试开发的系统创建许多 .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 是一个有效的日期对象,因为我能够在小提琴中测试该部分。
我对@987654326@ 的效果有什么误解,或者这不是编写 .json 文件以在服务器上使用的最佳方式吗?
【问题讨论】:
-
请显示您的代码的整个相关上下文。例如,您是否有完整的错误处理以便捕获并记录任何错误?这里关于代码的问题应该包括所有相关的代码和上下文。如果不查看实际代码,我们将无法帮助您修复代码。我们无法猜测您的代码是什么样的。是的,
fs.writeFileSync()在正确使用时会创建新文件,但显然您没有在正确的位置查找文件,或者您没有正确使用该功能。没有看到你的代码就无法判断! -
您的代码对
fs.readFileSync()使用了错误的参数。在文档中查找。它返回数据并且不使用回调。所以,你的fs.writeFileSync()永远不会被调用。 -
你使用了同步的 wrriteFileSync 函数,但尝试回调是错误的