Javascript 未处理的拒绝错误:整数不安全

Javascript 未处理的拒绝错误:整数不安全,javascript,socket.io,socket.io-redis,Javascript,Socket.io,Socket.io Redis,有时,当通过socket.io 2.0发送JSON数据时,我会收到错误“Unhandled rejection error:Integer不安全”。下面是发送导致此类错误的tweet对象的示例 示例代码: 我正在节点6.11.2上使用这些包: “redis”:“^2.8.0” “socket.io”:“~2.0” socket.io redis“^5.1.0” JSON负载是不是太大了?如果是,如何约束有效负载?Javasvcript中的最大安全整数是: 9007199254740991

有时,当通过socket.io 2.0发送JSON数据时,我会收到错误“Unhandled rejection error:Integer不安全”。下面是发送导致此类错误的tweet对象的示例

示例代码:

我正在节点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的开发文档中有一个关于这个问题的讨论:。注意,JSON结构提供了
id\u str
作为替代,它实际上是一个字符串


而且,根据那篇文章,您要么需要在解析JSON之前对其进行预处理,以删除
id
值,要么需要得到一个解析器,该解析器不会对这些长id抛出异常,而只是截断它们或将它们转换为
null
NaN
。在这两种情况下,您的代码都需要使用.id\u str,而不是
。id

理解和回答问题所需的代码必须粘贴到实际问题中,而不仅仅是通过链接。这是因为链接有随时间变化或消失的习惯,使得问题无法作为长期参考。请添加代码的相关部分请直接回答您的问题,然后对其进行适当的格式化。这个JSON的来源是什么?它来自哪里?它直接来自twitter api,这就是为什么我感到困惑的原因,它不能很好地发挥socketio负载的作用。twitter本身在我的回答中链接的开发文档中解释了这个问题。您是否在node.js中解析这个问题?在什么版本?我是一个从twitter检索数据的人,在其周围放置一个信封,并将其放入mongodb队列中。在这个过程中没有编码问题。只有通过socket2发送数据时才有编码问题。很好的查找和回答。该值从twitter API有效负载中检索,解析并保存到mongo中,排队,然后检索以通过socket发送,onl最后一段出现了错误。在一天结束时,我希望避免预先解析和调整我们正在检索的所有数据,而不是中断编码。