代码之家  ›  专栏  ›  技术社区  ›  brabant

财务报表。关闭脚本时,writeFile()写入[object,object]而不是实际对象

  •  13
  • brabant  · 技术社区  · 9 年前

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

    对于如何防止错误关闭阅读器,有什么想法吗? 我已经试着在写作前检查一下字体,但似乎没有多大帮助。

    function writeConfig(obj) {
        fs.writeFile('./config.json', obj, function (err) {
            if (err) console.log(err);
        });
    }
    
    2 回复  |  直到 6 年前
        1
  •  22
  •   Ricky Levi    9 年前

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

    JSON.stringify(obj)

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

        2
  •  3
  •   eliyahud    9 年前

    fs的第二个参数。writeFile是字符串或缓冲区:

    fs.writeFile(file, data[, options], callback)

    如果传递对象,它将通过对象上的default.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);
            });
    }