开发者问题收集

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

2017-08-28
46502

我已成功在 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)

任何建议都会更有帮助

3个回答

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

Amir
2018-10-02

我们团队中有人遇到过这个问题,所以我们猜测是他的机器出了问题。 原来他安装了 node x86。 安装 node x64 并重建所有 node_modules 后,错误就消失了。

JJP
2022-03-31

jpeg-js 使用的内存不足以进行图像处理,

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

IvanM
2018-10-12