【发布时间】:2021-09-14 16:39:26
【问题描述】:
我有一个 JSON 文件,它的 json 数据大小为 914MB。我用fs-extra 加载文件并解析它。但是当我解析它时会出错
无法创建长度超过 0x1fffffe8 个字符的字符串
下面是代码
const fs = require('fs-extra');
const rawdata = fs.readFileSync('src/raw.json');
const data = JSON.parse(rawdata);
我正在使用npm 运行该项目,并在package.json 中运行以下命令。
"scripts": {
"start:dev": "cross-env NODE_OPTIONS='--max-old-space-size=4096' ts-node -r tsconfig-paths/register ./src --env=development",
}
【问题讨论】:
-
您的服务器进程没有足够的内存。操作系统对单个进程可以消耗的资源施加限制。通常有一些方法可以指示操作系统应该为您的进程提供更多内存,但如果不知道您在做什么,就不可能提供更多信息。
-
我使用过非常大的数据库,处理 900MB JSON 文件从来都不是我必须要做的事情。一方面,JSON 是一种真的低效的存储格式。
-
See this Node changelist.。 Node 的最大字符串长度约为 512MB,并且无法更改。它是 Node 架构的一部分。
-
尝试使用流式 JSON 解析器。
-
是的,流式解析器会很好,但如果代码开始组装数据结构本身时可能涉及另一个内存限制,我不会感到惊讶。同样,了解应用程序详细信息可能会让人们为 架构 更改提供建议。
标签: javascript node.js json npm