webpack打包---報錯內存溢出javaScript heap out of memory


今天, npm run build打包時,又報內存溢出了。所以記錄一下,之前查了博客有一些解釋。

 

“報錯CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory是 JavaScript堆內存不足,這里說的 JavaScript 其實就是 Node,我們都知道 Node 是基於V8引擎,在一般的后端開發語言中,在基本的內存使用上沒有什么限制。

但是我去查閱了相關的資料才發現,在 Node 中通過 JavaScript 使用內存時只能使用部分內存(64位系統下約為1.4 GB,32位系統下約為0.7 GB),這就是我們編譯項目時為什么會出現內存泄露了。

因為前端項目如果非常的龐大,webpack 編譯時就會占用很多的系統資源,如果超出了V8對 Node 默認的內存限制大小就會出現剛剛我截圖的那個錯誤了,那怎么解決呢?

V8依然提供了選項讓我們使用更多的內存。Node 在啟動時可以傳遞 --max-old-space-size 或 --max-new-space-size 來調整內存大小的使用限制。

如果遇到 Node 無法分配足夠內存給 JavaScript 的情況,可以用這個辦法來放寬V8默認的內存限制,避免在執行過程中稍微多用了一些內存就輕易崩潰”

針對我自己的項目,解決方法如下圖

1.在目錄node_modules/.bin下;

2.分別打開ng.cmd和ngc.cmd文件,添加  --max_old_space_size=32768,就OK了

 

 

解決方法一:(自己也是通過這種方法解決問題的,推薦)

1.在package.json文件的scripts中添加

{
    script:{ "ionic:build": "node --max-old-space-size=8192 ./node_modules/@ionic/app-scripts/bin/ionic-app-scripts.js build", } }

2.構建ionic

npm run ionic:build --prod

3.構建codrova

cordova build android --release
cordova build ios --release

解決方法二:

1.在node_modules/.bin/ionic-app-scripts.cmd文件的添加:

@IF EXIST "%~dp0\node.exe" ( "%~dp0\node.exe" "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %* ) ELSE ( @SETLOCAL @SET PATHEXT=%PATHEXT:;.JS;=;% node --max_old_space_size=4096 "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %* )

2.打包

ionic build android --prod --release --max_old_space_size=4096


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM