我已经成功在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)
任何建议都会更有帮助
看来您没有足够的内存来执行大尺寸上传
我们团队中有人遇到了这个问题,所以我们猜测他的机器出了问题。 结果他安装了node x86。 安装node x64并重建所有node_modules后,错误消失了。
jpeg-js 图像处理使用的内存不足,
- 可能的解决方案是调整图片大小(imagemagick/其他)
我最近在我的服务器上遇到了一个反复出现的问题,由 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 刷新
然后重新加载服务器并测试服务器是否工作。