如何处理nodejs中的数组缓冲区分配失败?

Posted

技术标签:

【中文标题】如何处理nodejs中的数组缓冲区分配失败?【英文标题】:How to handle Array buffer allocation failed in nodejs? 【发布时间】:2018-02-05 18:58:57 【问题描述】:

我已经在 nodejs 中成功上传了图片,我正在使用 multer。 但有时会发生“数组缓冲区分配失败”错误,我想处理该错误。我试图将代码保留在 try-catch 块中,即使它仍然会引发错误并且我无法弄清楚如何处理此错误或如何避免该错误? 能够上传文件,但是当我尝试更改高度和宽度并制作新图像时,它会引发错误

Uncaught RangeError: Array buffer allocation failed

 at Buffer.Uint8Array (native)

 at FastBuffer (buffer.js:8:1)

 Array buffer allocation failed

   at Buffer.Uint8Array (native)

   at FastBuffer (buffer.js:8:1)

   RangeError: Array buffer allocation failed
    at new Uint8Array (native)
    at Object.getData (/Burg_nodejs/node_modules/jpeg-js/lib/decoder.js:797:18)
    at Object.copyToImageData (/Burg_nodejs/node_modules/jpeg-js/lib/decoder.js:913:23)
    at Object.decode (/Burg_nodejs/node_modules/jpeg-js/lib/decoder.js:985:11)
    at Jimp.parseBitmap (/Burg_nodejs/node_modules/jimp/index.js:310:36)
    at /Burg_nodejs/node_modules/jimp/index.js:202:29
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:446:3)

任何建议都会更有帮助

【问题讨论】:

你的内存好像用完了? 【参考方案1】:

您似乎没有足够的内存来执行大尺寸上传

【讨论】:

【参考方案2】:

jpeg-js 用于图像处理的内存不足,

- 可能的解决方案是调整图片大小(imagemagick/whatever)

【讨论】:

以上是关于如何处理nodejs中的数组缓冲区分配失败?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 C 中的堆栈数组分配失败?

如何处理插入 '\0' 的字符数组?

C getline() - 如何处理缓冲区/如何将未知数量的值读入数组

如何处理错误的数据类型输入

如何处理Android中的防缓冲区溢出技术

单片机环形对接溢出如何处理