最近在折腾Threejs时候遇到了这个问题,当需要转换的GLTF模型过大,报错如下。
Error: maxMemoryUsageInMB limit exceeded by at least 97MB
at Function.requestMemoryAllocation (C:\Users\GHL\AppData\Local\npm-cache\_npx\16b3f312213fced0\node_modules\jpeg-js\lib\decoder.js:1071:13)
at Object.decode (C:\Users\GHL\AppData\Local\npm-cache\_npx\16b3f312213fced0\node_modules\jpeg-js\lib\decoder.js:1121:15)
at handleJPEG (C:\Users\GHL\AppData\Local\npm-cache\_npx\16b3f312213fced0\node_modules\get-pixels\node-pixels.js:32:21)
at doParse (C:\Users\GHL\AppData\Local\npm-cache\_npx\16b3f312213fced0\node_modules\get-pixels\node-pixels.js:114:7)
解决办法:
这个问题似乎是因为Nodejs内部的jpeg库的问题,即使在调整了Nodejs全局内存限制后,仍然报错。
所以只能改代码。
首先找到handleJPEG,然后报错目录就是它的所在之处,
打开C:\Users\GHL\AppData\Local\npm-cache\_npx\16b3f312213fced0\node_modules\get-pixels\node-pixels.js:32:21
然后找到这么一行代码
jpegData = jpeg.decode(data)
改成
jpegData = jpeg.decode(data, { maxMemoryUsageInMB: 1024 })
保存,然后重新运行npx gltfjsx即可
暂无评论