背景:使用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 即可正常完成編譯。