1.问题
公司项目vue构建,体积比较庞大,在Jenkins上构建时,有新的内容提交时,第一次npm run build必失败,报内存溢出错误
如下所示:
2.解决过程
看报错信息是JavaScript堆内存不足。
查阅一些资料说是node基于V8引擎,在使用内存时只能使用部分内存,64位系统约为1.7G,项目太大这种限制会很坑,第一个想法是突破这种内存限制,网上也有很多这种方法:
第一种:设置环境变量:
export NODE_OPTIONS=–max_old_space_size=4096
第二种:在运行命令中增加 –max_old_space_size=4096
例如可以修改 package.json 的 scripts 脚本,具体代码就不展示了。。。
第三种:使用 increase-memory-limit 插件,增加node服务器内存限制
npm install –save-dev increase-memory-limit
npm run fix-memory-limit
然而,以上方法都无效。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
开始正题。。。
第一个想法:失败后重试,反正一般情况下第二次必成功
jerkins失败重试:Jenkins失败自动重试
第二个想法:
查看了服务器使用的node版本,是10.15.3,而自己电脑最新的稳定版是12,打包完全没问题,怀疑旧版本V8引擎太老,服务器更新node来试试,node13升级了V8,带来性能调整和改进!!
先清除缓存:
npm cache clean -f
node多版本管理有个神器,n
先安装:
npm install -g n
安装最新版本:
n latest
安装最新稳定版本:
n stable
安装完成之后,直接输入n
选择版本(10.15.3版本是手动配置的环境变量,已经去掉,这里看不到了)
上线翻动,按enter选择
然后就可以使用对应的版本了。
npm的版本可能比较低,需要更新下:
npm install -g npm
Jenkins上重新构建,发现还是使用的10.15.3的版本!原来在jenkins上的系统设置已经设置了环境变量,写死的node环境地址,去掉即可:
打包遇到的问题:
代码语言:javascript复制Downloading binary from https://github.com/sass/node-sass/releases/download/v4.12.0/linux-x64-79_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v4.12.0/linux-x64-79_binding.node":
HTTP error 404 Not Found
Hint: If github.com is not accessible in your location
try setting a proxy via HTTP_PROXY, e.g.
export HTTP_PROXY=http://example.com:1234/
or configure npm proxy via
npm config set proxy http://example.com:8080/
看起来github上的资源没有,直接404了,换成国内镜像源
npm i node-sass –sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
每次打包的时候都加上这个,完事。
试过全局加这个镜像,竟然不行,还是从github下,不知为何?待续吧
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100278.html原文链接: