修复Vue打包时栈溢出:FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
打包时报错:从终端输出内容可知,在执行命令期间,项目构建进程因 JavaScript 堆内存不足而崩溃。表明构建进程在运行时耗尽了分配给 Node.js 的内存,从而导致程序崩溃。
·
问题
最近有个项目,里面有 3D 的内容,可能打包体积比较庞大,我的打包脚本是这样的:
"scripts": {
"build:test": "cross-env NODE_ENV=test vite build --mode test && esno ./build/script/postBuild.ts",
"build:prod": "cross-env NODE_ENV=production vite build --mode production && esno ./build/script/postBuild.ts",
}
打包时报错:

从终端输出内容可知,在执行 pnpm run build:test 命令期间,项目构建进程因 JavaScript 堆内存不足而崩溃。表明构建进程在运行时耗尽了分配给 Node.js 的内存,从而导致程序崩溃。
解决
增加 Node.js 堆内存限制。可以在运行构建命令时,通过 NODE_OPTIONS 环境变量来增大 Node.js 的堆内存限制。
修改 package.json 中的脚本:
"scripts": {
"build:test": "cross-env NODE_OPTIONS=--max-old-space-size=4096 NODE_ENV=test vite build --mode test && esno ./build/script/postBuild.ts",
"build:prod": "cross-env NODE_OPTIONS=--max-old-space-size=4096 NODE_ENV=production vite build --mode production && esno ./build/script/postBuild.ts"
}
上述代码里,--max-old-space-size=4096 把 Node.js 的堆内存限制提升到了 4GB(4096MB),你可以依据实际状况调整这个数值。
这回终于打包成功了:

更多推荐
所有评论(0)