fs.writeFile() 在关闭脚本时写入 [object, object] 而不是实际对象
fs.writeFile() writes [object, object] instead of actual objects when closing script
我的脚本需要从 JSON 文件中读取和写入。这没有问题。
我在本地复制文件,编辑对象,然后将它们写回到文件中。
但是,当我使用 Ctrl+C 关闭脚本并检查我的文件时,它有 [object, object]
而不是应该存在的实际对象。
这并非每次都会发生,但很烦人,因为我的脚本依赖于此文件。
关于如何防止错误关闭 reader 的任何想法?
我已经尝试在编写之前检查类型,但它似乎没有太大帮助。
function writeConfig(obj) {
fs.writeFile('./config.json', obj, function (err) {
if (err) console.log(err);
});
}
我认为您应该将 obj
转换为 JSON 字符串,否则它是一个真实的 - JSON 对象,不能简单地写入文件
JSON.stringify(obj)
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
fs.writeFile 的第二个参数是字符串或缓冲区:
fs.writeFile(file, data[, options], callback)
如果您传递一个对象,它将通过对象上的默认 .toString() 方法进行转换,结果为 [object Object]
如果要序列化JSON格式的对象,使用JSON.stringify
函数:
function writeConfig(obj) {
fs.writeFile('./config.json', JSON.stringify(obj, undefined, 2), function (err) {
if (err) console.log(err);
});
}
我的脚本需要从 JSON 文件中读取和写入。这没有问题。
我在本地复制文件,编辑对象,然后将它们写回到文件中。
但是,当我使用 Ctrl+C 关闭脚本并检查我的文件时,它有 [object, object]
而不是应该存在的实际对象。
这并非每次都会发生,但很烦人,因为我的脚本依赖于此文件。
关于如何防止错误关闭 reader 的任何想法? 我已经尝试在编写之前检查类型,但它似乎没有太大帮助。
function writeConfig(obj) {
fs.writeFile('./config.json', obj, function (err) {
if (err) console.log(err);
});
}
我认为您应该将 obj
转换为 JSON 字符串,否则它是一个真实的 - JSON 对象,不能简单地写入文件
JSON.stringify(obj)
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
fs.writeFile 的第二个参数是字符串或缓冲区:
fs.writeFile(file, data[, options], callback)
如果您传递一个对象,它将通过对象上的默认 .toString() 方法进行转换,结果为 [object Object]
如果要序列化JSON格式的对象,使用JSON.stringify
函数:
function writeConfig(obj) {
fs.writeFile('./config.json', JSON.stringify(obj, undefined, 2), function (err) {
if (err) console.log(err);
});
}