正如标题所暗示的那样,我正试图JSON.stringify在我的Node.js应用程序中使用巨大的JavaScript对象进行字符串化.对象 - 再次 - 巨大(几十兆字节),它们不包含任何函数.我需要将序列化对象写入文件.我现在得到的是:
RangeError: Invalid string length
at Object.stringify (native)
at stringifyResult (/my/file.js:123:45) -> line where I use JSON.stringify
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
查看javascript类型我试图找出某些数据类型的最大存储大小.例如,我设置了一个快速递归算法来增加var大小,直到浏览器崩溃,最终在我现有版本的chrome上的字符串接近128mb(或者可能是256).
我一直在做这个痛苦的方式,因为我找不到任何关于此的规格,但是持续的浏览器崩溃使得这是一个痛苦的试验(尝试捕获因某些原因在这个特定问题上似乎无用).
我正在寻找有关其他类型的最大存储大小的信息(数组,对象,函数,字符串,数字,bools ......)
EMCA-262第8.4节对此持模糊态度
String的长度是其中的元素数(即16位值).空String的长度为零,因此不包含任何元素.
...所以也许这是需要在浏览器中实现的东西?
然而,ECMA会告诉我们有关数字的信息,例如
Number类型具有18437736874454810627(即2 ^ 64-2 ^ 53 + 3)值,表示IEEE标准二进制浮点运算中指定的双精度64位格式IEEE 754值,但9007199254740990(即,2 ^ 53-2)IEEE标准的不同"非数字"值在ECMAScript中表示为单个特殊NaN值.
但后来我没有看到任何关于物体的东西.
我可以期待在浏览器中使用什么?是否有任何代码库可以帮助管理非常大的对象和字符串?
我可以在一个脚本中分配多少内存?
我有一个应用程序,我希望限制连接客户端通过线路发送的消息的最大大小.由于Node.js中消息的理论最大值约为1.9 GB,因此,如果某些恶意客户端尝试发送超大数据包,我实际上从不希望我的应用程序分配大量内存.
如何限制传入的邮件大小,比如1024字节?
I have JSON file which has json data of size 914MB. I loading the file with fs-extra and parsing it. But when i parse it get error as
cannot create a string longer than 0x1fffffe8 characters
Below is code
const fs = require('fs-extra');
const rawdata = fs.readFileSync('src/raw.json');
const data = JSON.parse(rawdata);
Run Code Online (Sandbox Code Playgroud)
I am running the project with npm and to run i have below command in package.json.
"scripts": {
"start:dev": "cross-env NODE_OPTIONS='--max-old-space-size=4096' ts-node -r tsconfig-paths/register ./src --env=development",
}
Run Code Online (Sandbox Code Playgroud)