2012-06-07 5 views
0

Я пытаюсь написать очень большой кусок данных (в результате JSON.stringify) в файл. Это должно быть синхронно, потому что я хотел бы сохранить его во время процесса: exit event. Однако при использовании fs.writeFileSync(), Node бросков с этим сообщением:Запись большого количества данных синхронно с node.js

FATAL ERROR: JS Allocation failed - process out of memory 

Я попытался fs.createWriteStream(), но это не похоже на работу. Этот код выводит 0 байтов со средним количеством данных и выдает ту же ошибку с большим.

+0

Вот почему потоки для, вы можете объяснить, почему fs.createWriteStream() не удалось? – Mustafa

+0

@ Мустафа, я не знаю. Окончательный файл не содержит ничего. –

+0

@ NisonMaël какая длина вашей строки? Вы уверены, что операция FS не удалась, а не 'JSON.stringify'? – elmigranto

ответ

0

Моя проблема была в JSON.stringify. Данные были слишком большими для хранения в уникальной строке javascript.

Я решил эту проблему путем сериализации одного свойства в строке (так что есть X-вызовы для JSON.stringify, где X - количество свойств в моем объекте). Мой десериализатор перестраивает объект, добавляя все свойства.

1

Я думаю, что вам нужен «насос». Что-то вроде http://elegantcode.com/2011/04/06/taking-baby-steps-with-node-js-pumping-data-between-streams/ Это избавит вас от буферов ядра, и им не придется постоянно удерживать весь текст.

+0

Я не уверен, источником моих данных является строка, есть только один поток –

Смежные вопросы