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

Posted

技术标签:

【中文标题】fs.writeFile() 在关闭脚本时写入 [object, object] 而不是实际的对象【英文标题】:fs.writeFile() writes [object, object] instead of actual objects when closing script 【发布时间】:2016-10-17 23:15:19 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

JSON.stringify(obj)

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

【讨论】:

以上是关于fs.writeFile() 在关闭脚本时写入 [object, object] 而不是实际的对象的主要内容,如果未能解决你的问题,请参考以下文章

fs.writeFile 没有错误,但是写入文件失败

nodejs模块——fs模块 WriteFile写入文件

在 Node 中使用“fs”写入文件时出错

fs.writeFile 在新创建的 vue 项目中不起作用[重复]

node文件写入的三种操作

如何在 HTML 中使用 fs.writeFile(使用 node.JS)?