关闭脚本时,fs.writeFile()写入[object,object]而不是实际对象

时间:2016-06-16 12:24:28

标签: node.js object filewriter fs

我的脚本需要从JSON文件读取和写入。这没有问题。 我在本地复制文件,编辑对象,然后将它们写回文件。 但是,当我使用Ctrl + C关闭脚本并检查我的文件时,它有[object, object]而不是应该存在的实际对象。 这不是每次都发生,但是很烦人,因为我的脚本依赖于这个文件。

有关如何防止错误关闭阅读器的任何想法? 我在写作之前已经尝试过检查类型,但似乎没什么帮助。

function writeConfig(obj) {
    fs.writeFile('./config.json', obj, function (err) {
        if (err) console.log(err);
    });
}

2 个答案:

答案 0 :(得分:8)

我相信您应该将obj转换为JSON字符串,否则它是一个真正的JSON对象,不能简单地写入文件

JSON.stringify(obj)

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

答案 1 :(得分:2)

fs.writeFile的第二个参数是String或Buffer:

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);
        });
}