我正在尝试将一个非常大的数据块(由JSON.stringify生成)写入文件。它必须是同步的,因为我想在此过程中保存它:退出事件。但是,当使用fs.writeFileSync()时,Node会抛出以下消息:
FATAL ERROR: JS Allocation failed - process out of memory
我尝试过fs.createWriteStream(),但它似乎不起作用。此代码输出0字节,中等数据量,并抛出相同的大错误。
答案 0 :(得分:1)
我认为你需要的是一个'泵'。类似于http://elegantcode.com/2011/04/06/taking-baby-steps-with-node-js-pumping-data-between-streams/的东西,这将减轻你的内核缓冲区,并且它们不必一直保存所有文本。
答案 1 :(得分:0)
我的问题出在JSON.stringify中。数据太大,无法存储在唯一的JavaScript字符串中。
我通过每行序列化一个属性解决了这个问题(因此X调用了JSON.stringify,其中X是我对象中的属性数)。我的反序列化器通过添加每个属性来重建对象。