【发布时间】:2021-06-20 15:58:08
【问题描述】:
我正在使用请求库(已启用 gzip),但由于此错误而崩溃。
这个错误似乎发生在这一行,
response.body = response.body.toString(self.encoding)
包含该行的范围,
response.body = Buffer.concat(buffers, bufferLength)
if (self.encoding !== null) {
response.body = response.body.toString(self.encoding)
}
完整的堆栈跟踪,
Error: Cannot create a string longer than 0x3fffffe7 characters
at Buffer.utf8Slice (<anonymous>)
at Buffer.toString (buffer.js:797:17)
at Request.<anonymous> (/home/proj/node_modules/request/request.js:1128:39)
at Request.emit (events.js:315:20)
at IncomingMessage.<anonymous> (/home/proj/node_modules/request/request.js:1076:12)
at Object.onceWrapper (events.js:421:28)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1220:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
code: 'ERR_STRING_TOO_LONG'
}
当缓冲区长度超过 1073741799 个字符时,将缓冲区转换为字符串的最佳方法是什么?
【问题讨论】:
-
这在托尔斯泰的战争与和平长度范围内。我们到底在说什么?你为什么要创建一个 1~2 MB 的字符串?
-
Javascript 无法真正处理这种大小的字符串。实际上,错误再清楚不过了。这不是工作的工具。
-
@JaredSmith 我不知道,但请求库可以。我获取您知道的网站,该大小很常见,但无法前进。
-
@somethinghere 这是 NodeJS。它应该能够处理这种大小的字符串。
-
但我也愿意跳过这个字符串。我只是不知道该怎么做才能跳过它。
标签: javascript