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 上使用这些包:

JSON 负载是不是太大了?如果是,如何限制有效负载?

Javasvcript 中的最大安全整数是:

9007199254740991

您的 JSON 包含如下整数:

899068272867328000

超出限制。

不需要实际用作数字的东西(其中一个大数字被标记为 "id" 可能只是用作字符串而不是数字,所以将它们放入 JSON 作为字符串,而不是数字。

如果此数据来自 Twitter,这里是 Twitter 开发文档中对该问题的讨论:Twitter IDs。请注意,JSON 结构提供 id_str 作为替代方案,它确实是一个字符串。

而且,根据那篇文章,您需要在解析 JSON 之前对其进行预处理以删除 id 值,或者您需要获得一个不会抛出异常的解析器这些长 ID,而只是截断它们或将它们转换为 nullNaN。而且,无论哪种情况,您的代码都需要使用 .id_str,而不是 .id.