踩坑日记 前端项目线上打包内存溢出

1,135 阅读1分钟

2022年11月16日 天气阴

今天也是日常学习的一天,要把本地项目推到线上打包,然后走统一机器打包部署流程
然后正常的打标签,正常的机器打包,结果打包的时候报错了

image.png

问题排查

1.由于线上打包异常,所以首先排查项目本身是否可以正常打包,然后我本地打包是正常的。 image.png


2.排查线上的机器node的版本,线上默认使用的10.x.x的,而本地项目使用14.x.x,要考虑是否node版本差异导致的,更换机器为14.x.x,重新进行打包,结果依旧不行,提示同样的错误。 image.png


3.看报错“Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory”。

这个是内存溢出的提示,通常来说项目比较大的情况下,启动或打包会出现,要扩展node内存,我记得node的默认1.4G,有可能是线上node分配的虚拟内存不够大。

所以在package.json的scripts中找到对应的编译命令,加上的node –-max_old_space_size=4096即可,大小按照项目而定。
重新打包——成功
image.png

总结

Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
打包的时候遇到这个报错就是,node需要扩展内存
且当改动的是线上的机器内存时
解决方案是在package.json的scripts中对应的打包语句中补充上 node –-max_old_space_size=xxx即可
注意:
如果接入了cross-env直接在打包语句中加上node –-max_old_space_size=xxx会报错
把node --max_old_space_size=xxx 换成 nodeE_OPTIONS=--max-old-space-size=xxx,即可