项目变大后打包到一半进程崩溃,提示堆内存不足,加大机器内存也没改善。日志里能对上时间点,这种反而好排。
Node 默认堆上限约 1.7G,构建期同时持有大量模块和 sourcemap,超过就终止。这一点先确认清楚,后面就不用反复试。
set NODE_OPTIONS=--max-old-space-size=4096 npx webpack --mode production // 或 cross-env NODE_OPTIONS=--max-old-space-size=4096 webpack
围绕「Webpack 构建内存溢出」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
处理上按这个顺序:临时提高 Node 堆上限;关闭生产构建的 sourcemap;用分包和缓存减少同时驻留。
结果对不对很好判断,构建能完整结束并产出文件,构建日志不再出现堆内存错误。