因為項目過大運行打包項目的時候報錯FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed
原因如下:
failed - JavaScript heap out of memory JavaScript堆內(nèi)存不足咐容,這里說的 JavaScript 其實就是 Node亥啦,我們都知道 Node 是基于V8引擎徘层,在一般的后端開發(fā)語言中,在基本的內(nèi)存使用上沒有什么限制诚隙,在 Node 中通過 JavaScript 使用內(nèi)存時只能使用部分內(nèi)存(64位系統(tǒng)下約為1.4 GB,32位系統(tǒng)下約為0.7 GB),這就是我們編譯項目時為什么會出現(xiàn)內(nèi)存泄露了斗遏,因為前端項目如果非常的龐大脆炎,webpack 編譯時就會占用很多的系統(tǒng)資源梅猿,如果超出了V8對 Node 默認的內(nèi)存限制大小就會出現(xiàn)剛剛我截圖的那個錯誤了,那怎么解決呢秒裕?V8依然提供了選項讓我們使用更多的內(nèi)存袱蚓。Node 在啟動時可以傳遞 --max-old-space-size 或 --max-new-space-size 來調(diào)整內(nèi)存大小的使用限制。
第一種解決方案:在package.json 設(shè)置內(nèi)存大小
Vue
"build": "node --max_old_space_size=8192"
React
"scripts": {
"build": "umi build --max_old_space_size=8192 ",
}
第二種解決方案:使用 increase-memory-limit 插件几蜻,增加node服務(wù)器內(nèi)存限制
一般情況如果用過第一種方案成功可以不使用第二種喇潘,我是遇到第一種配置內(nèi)存還不起作用的時候用第二種方案生效。
全局安裝increase-memory-limit
命令行cmd窗口運行:npm install -g increase-memory-limit梭稚,
進入項目文件夾颖低,運行:increase-memory-limit(只需要執(zhí)行一次即可)