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

问题描述 投票:0回答:4

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

任何建议都会更有帮助

arrays node.js image buffer
4个回答
16
投票

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


10
投票

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


2
投票

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

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


0
投票

我最近在我的服务器上遇到了一个反复出现的问题,由 PM2 管理的我的应用程序不断崩溃并出现以下错误:

5|tayopayd | 5|泰奥帕德| RangeError:数组缓冲区分配失败 5|泰奥帕德| 在新的ArrayBuffer() 5|泰奥帕德| 在对象。 (/data/apps/staging/tayopay/back-end/node_modules/brotli/build/encode.js:21:207) 5|泰奥帕德| 在 Module._compile (节点:内部/模块/cjs/loader:1198:14) 5|泰奥帕德| 在 Object.Module._extensions..js (节点:内部/模块/cjs/loader:1252:10) 5|泰奥帕德| 在Module.load(节点:内部/模块/cjs/loader:1076:32) 5|泰奥帕德| 在 Function.Module._load (节点:内部/模块/cjs/loader:911:12) 5|泰奥帕德| 在 Module.require (节点:内部/模块/cjs/loader:1100:19) 5|泰奥帕德| 在需要时(节点:内部/模块/cjs/helpers:119:18) 5|泰奥帕德| 在对象。 (/data/apps/staging/tayopay/back-end/node_modules/brotli/compress.js:1:14) 5|泰奥帕德| 在Module._compile(节点:内部/模块/cjs/loader:1198:14)

然后我使用

解决了清除服务器日志的问题

pm2 刷新

然后重新加载服务器并测试服务器是否工作。

© www.soinside.com 2019 - 2024. All rights reserved.