【问题标题】:fs.writeFile() writes [object, object] instead of actual objects when closing scriptfs.writeFile() 在关闭脚本时写入 [object, object] 而不是实际的对象
【发布时间】: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);
    });
}

【问题讨论】:

    标签: node.js object filewriter fs


    【解决方案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

      【讨论】:

        猜你喜欢
        • 2021-01-01
        • 2022-01-02
        • 2022-10-21
        • 2012-09-21
        • 1970-01-01
        • 2014-12-11
        • 2019-03-14
        • 2021-05-14
        • 1970-01-01
        相关资源
        最近更新 更多