天天看點

Webpack打包報"JavaScript heap out of memory"錯誤

問題

開發項目有一段時間了,随着項目越來越大,打包的時間也相應的變長了,打包時的記憶體也增多了。這時候産生了一個問題,在釋出項目的時候,會出現

JavaScript heap out of memory

錯誤的提示。

如下圖:

Webpack打包報"JavaScript heap out of memory"錯誤

以上錯誤一直導緻,無法釋出項目。

詳細錯誤内容:

CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

原因

Node

中通過

JavaScript

使用記憶體時隻能使用部分記憶體(64位系統:1.4 GB,32位系統:0.7 GB),這個時候,如果前端項目非常的龐大,

Webpack

編譯時就會占用很多的系統資源,如果超出了

V8

引擎對

Node

預設的記憶體限制大小時,就會産生記憶體洩露(JavaScript heap out of memory)的錯誤。

解決方案

既然

V8

引擎有對

Node

進行預設的記憶體限制大小,那麼在

Node

記憶體不足的時候,可以放寬記憶體大小的使用限制,可以在

Node

啟動的時候,傳遞

--max-old-space-size

--max-new-space-size

來調整記憶體大小的使用限制。

但是這種方式需要所有地方都要進行設定,是以需要安裝一個插件

increase-memory-limit

使用方式如下:

  • 安裝

    npm install -g increase-memory-limit

  • 運作

    increase-memory-limit

  • npm 異步運作
"scripts": {
    "fix-memory-limit": "cross-env LIMIT=2048 increase-memory-limit"
  },
  "devDependencies": {
    "increase-memory-limit": "^1.0.3",
    "cross-env": "^5.0.5"
  }
           

執行一次

npm run fix-memory-limit

插件:increase-memory-limit