fs.writeFile()在关闭脚本时输出[object,object]而不是实际对象。

13

我的脚本需要从JSON文件读取和写入数据,这个过程没有问题。我将文件复制到本地,编辑对象并将其写回文件。但是,当我使用Ctrl+C关闭脚本并检查文件时,文件中会被显示为[object, object],而不是应该在那里的实际对象。尽管不是每次都发生,但这很烦人,因为我的脚本依赖于此文件。

有什么方法可以防止读取器错误地关闭吗?我已经尝试在写入之前检查类型,但似乎并没有帮助。

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

22

3

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接