webpack打包內存溢出


(node.js)webpack打包報javaScript heap out of memory,內存溢出

--max_old_space_size=4096

d

// 方法一
/** ===https://www.cnblogs.com/yangjing1314/p/9993835.html=== */
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

 經過搜索,最后的解決方案是刪除npmrc文件(不是nodejs安裝目錄npm模塊下的那個npmrc文件,而是C:\Users\{賬戶}\下的.npmrc文件)。

// 方法二
https://blog.csdn.net/QIANG123___/article/details/79183544
里面有句關鍵的話,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默認的內存限制,避免在執行過程中稍微多用了一些內存就輕易崩潰,既然知道了解決辦法那就好辦了,下面來詳細說明vue框架下的具體操作。


因為基於 vue-cli 生成的項目,vue沒有把 package.json 里面 scripts 字段的腳本命令的node命令隱藏起來,我們直接把上面v8提供的選項參數直接寫入scripts 字段的 node 命令后就好了,示例如下:

"scripts": {
    "dev": "node --max_old_space_size=4096 build/dev-server.js",
    "build": "node --max_old_space_size=4096 build/build.js"
  }

直接在 node 后面寫上 --max_old_space_size=4096 就好了,我這里設置的內存大小是4G,這個具體的大小可以根據自己的項目情況來設置就好了。然后再重新運行 npm run dev/build 就可以正常運行和打包了。

 

end.


免責聲明!

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



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