Unhandled rejection Error: Integer is unsafe
Unhandled rejection Error: Integer is unsafe
有时我在通过 socket.io 2.0 发送 JSON 数据时收到错误 'Unhandled rejection Error: Integer is unsafe'。这是发送导致此类错误的推文对象的示例。
示例代码:
https://gist.github.com/whoisstan/dcba1471094b984514c436fd395364e2
我在节点 6.11.2 上使用这些包:
- "redis": "^2.8.0",
- "socket.io": "~2.0",
- "socket.io-redis": "^5.1.0"
JSON 负载是不是太大了?如果是,如何限制有效负载?
Javasvcript 中的最大安全整数是:
9007199254740991
您的 JSON 包含如下整数:
899068272867328000
超出限制。
不需要实际用作数字的东西(其中一个大数字被标记为 "id" 可能只是用作字符串而不是数字,所以将它们放入 JSON 作为字符串,而不是数字。
如果此数据来自 Twitter,这里是 Twitter 开发文档中对该问题的讨论:Twitter IDs。请注意,JSON 结构提供 id_str
作为替代方案,它确实是一个字符串。
而且,根据那篇文章,您需要在解析 JSON 之前对其进行预处理以删除 id
值,或者您需要获得一个不会抛出异常的解析器这些长 ID,而只是截断它们或将它们转换为 null
或 NaN
。而且,无论哪种情况,您的代码都需要使用 .id_str
,而不是 .id
.
有时我在通过 socket.io 2.0 发送 JSON 数据时收到错误 'Unhandled rejection Error: Integer is unsafe'。这是发送导致此类错误的推文对象的示例。
示例代码: https://gist.github.com/whoisstan/dcba1471094b984514c436fd395364e2
我在节点 6.11.2 上使用这些包:
- "redis": "^2.8.0",
- "socket.io": "~2.0",
- "socket.io-redis": "^5.1.0"
JSON 负载是不是太大了?如果是,如何限制有效负载?
Javasvcript 中的最大安全整数是:
9007199254740991
您的 JSON 包含如下整数:
899068272867328000
超出限制。
不需要实际用作数字的东西(其中一个大数字被标记为 "id" 可能只是用作字符串而不是数字,所以将它们放入 JSON 作为字符串,而不是数字。
如果此数据来自 Twitter,这里是 Twitter 开发文档中对该问题的讨论:Twitter IDs。请注意,JSON 结构提供 id_str
作为替代方案,它确实是一个字符串。
而且,根据那篇文章,您需要在解析 JSON 之前对其进行预处理以删除 id
值,或者您需要获得一个不会抛出异常的解析器这些长 ID,而只是截断它们或将它们转换为 null
或 NaN
。而且,无论哪种情况,您的代码都需要使用 .id_str
,而不是 .id
.