Я пытаюсь экспортировать массив из 250000 объектов в файл Excel, используя node.js
, но сервер каждый раз дает сбой с:
ФАТАЛЬНАЯ ОШИБКА: CALL_AND_RETRY_LAST Распределение не удалось - куча JavaScript не хватает памяти
Я всегда запускаю сервер с npm --max-old-space-size=8000 start
Это часть моего кода, где я пытаюсь сгенерировать файл Excel с помощью модуля excel4node
:
// Create a new instance of a Workbook class
var wb = new xl.Workbook();
// Add Worksheets to the workbook
var ws = wb.addWorksheet('Sheet 1');
for(const [idx, request] of report.entries()) {
let counter = 1;
for(const [_, val] of Object.keys(request)) {
ws.cell(idx + 1, counter).string(val);
counter++;
}
}
wb.write('Excel.xlsx');
Это содержимое массива report
:
[
{
"Page URL": "http://www.example.com",
"Request URL": "http://use.typekit.net/yse3oeo.js",
"Domain": "typekit.net",
"OP Tag Category": "Data Management",
"OP Tag Name": "Adobe TypeKit",
"Registrar Name": "Adobe Systems Incorporated",
"Method": "GET",
"Type": "Script",
"mimeType": "text/javascript",
"Status": 200,
"Content Encoding": "gzip",
"Encoded Data Length": 8028,
"Action": null,
"IP Address": "92.123.20.219",
"Geolocation": "FR",
"Match Regex": null,
"Not Match Regex": null,
"Error": null,
"Chrome Initiator": "http://example.com",
"Final Page URL": null,
"Initial Page Status": null
}
...250000 more objects
]
Я также пытался использовать модуль mongo-xlsx
, но он не работает с той же ошибкой ...
Есть ли способ улучшить эффективность моего кода, чтобы уменьшить использование памяти? Или, может быть, есть лучшие способы сделать это?