fs.writeFile() writes [object, object] instead of actual objects when closing script

brabant picture brabant · Jun 16, 2016 · Viewed 8k times · Source

My script needs to read and write from a JSON file. This works without problems. I copy the file locally, edit the object, and write them back out to the file. However, when I close the script with Ctrl+C and check my file it has [object, object] instead of the actual objects that should be there. This doesn't happen all every time, but is annoying because my script depends on this file.

Any ideas for how to prevent this from closing the reader incorrectly? I already tried checking the type before writing but it didn't seem to help much.

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

Answer

Ricky Levi picture Ricky Levi · Jun 16, 2016

I believe you should convert the obj to a JSON string, otherwise it's a real - JSON object that can't be simply be written into file

JSON.stringify(obj)

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