关于npm前端项目编译时栈溢出 Maximum call stack size exceeded的处理方案
背景:使用vue+elementui的前端项目,使用jenkins进行自动化编译部署,某天在进行编译发版的时候,突然出现 npm ERR! Maximum call stack size exceeded 错误,一直都没法编译成功。
原因:随着前端项目的不断迭代,代码和依赖模块越来越多,编译时需要的内存需要越来越大,默认情况下node.js的编译内存是(32 位系统:约 0.7GB,64 位系统:约 1.7GB),编译内存不够导致编译失败。
处理方案:
前端项目引入跨平台环境变量设置工具cross-env模块,然后设置编译时的内存大小。
步骤一:
在前端项目引入依赖,执行如下命令:
npm install --save-dev cross-env
步骤二:对package.json的编译命令里设置内存参数:
"build:prod": "cross-env NODE_OPTIONS=--max-old-space-size=4096 vue-cli-service build --mode prod",
对于不同的编译命令,在对应命令前增加 cross-env NODE_OPTIONS=--max-old-space-size=4096 参数即可,我方项目是用 npm run build:tclprod 进行编译的,所以对package.json包的build:prod进行添加参数。
步骤三:执行 npm run build:tclprod 即可正常完成编译。