博客首页NodeJs分类
Webpack打包内存爆缸问题踩坑笔记
发布时间:2021-3-24 15:9:47编辑:Mr.Co阅读(5132)
最近在给一个大型前端项目打包的时候遇到一个Javascript heap out of memory的问题,经过一番查阅知道由于nodejs在执行js时候,内存受到v8限制,导致出现了Javascript heap out of memory问题.
限制内存原因:垃圾回收时,js线程会暂停执行,大量的堆内存回收严重影响性能
经过在网上查找,大部分帖子说的都是直接在package.json中的script中增加--max_old_space_size=4096来解救。但是这种方式必须要已node --max_old_space_size=4096 build.js来启动。
经过一番查找,找到除此之外的另一种解决方法那就是increase-memory-limit。然而这个第三方包还有坑。。通过npm查看,它还有一个increase-memory-limit-fixbug版本,记住一定要安装increase-memory-limit-fixbug。具体安装步骤如下;
npm i increase-memory-limit-fixbug cross-env --save-dev
安装好后,需要在package.json的scripts中添加一段fix-memory-limit执行脚本命令
"fix-memory-limit":"cross-env LIMIT=4096 increase-memory-limit"
这段命令其实就是将node_modules/.bin目录下的所有cmd中的node批量更改了指定的内存运行大小,配置完后执行npm run fix-memory-limit 最后再执行打包命令npm run build
运行完npm run build后,坑又出现了,直接报错"node --max-old-space-size=4096"不是内部或外部命令,也不是可运行的程序或批处理文件。
晕死,心里一顿草泥马,什么情况呢,紧接着又开始一顿代码跟踪查阅,才发现node_modules/.bin/webpack.cmd中的"%_prog%"多了两个双引号,需要把"%_prog%"改成%_prog%,然后再执行npm run build就可以成功运行了;
环境问题确实很坑,动不动就要耽搁大半天的时间,这里做个笔记,希望能帮助到其他遇到这个问题的同学;
转载请注明出自:http://www.mrco.cn/article/605ae5bba8bef5a01d31af52.html