GHL's Notes/

gltfjsx提示 maxMemoryUsageInMB limit exceeded解决办法

最近在折腾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即可

留下一条评论

暂无评论