Yarn build fatal error: ineffective mark-compacts near heap limit allocation failed – javascript heap out of memory

筆記碰到 yarn build 時遇到 javascript heap out of memory 的處理方式。透過 terminal 調高 Node 記憶體使用上限處理。

Yarn build fatal error: ineffective mark-compacts near heap limit allocation failed – javascript heap out of memory
Photo by Denisse Leon / Unsplash

最近在使用 Nuxt3 開發專案,在 yarn build 時碰到了標題奇怪的問題,大概意思就是 build 的時候記憶體不夠用啦,所以沒法 build 完成。

一開始專案還小時,並沒有這些詭異的問題,頂多就是本地開發行為跟 build 之後東西會壞掉之類的。不過發生這樣的行為大約是在修改 nuxt.config.ts 內的

build: {
  transpile: []
}

加入套件之後開始發生的。
不負責任猜測應該是在 build 時,處理太多套件導致記憶體不足。

解決方法

如果網路上查,應該會看到有個解法就是叫你安裝最近的 Node 版本,因為 Node 10 預設最多使用 512 MB 記憶體。而我的開發環境為 14 所以代表升級版本沒有改善記憶體管理。

增加記憶體使用上限

export NODE_OPTIONS="--max-old-space-size=4096" # 數字為 4GB 可自行視設備調整
# or
set NODE_OPTIONS=--max_old_space_size=4096 

直接開啟 terminal 敲指令即可。

參考資料

https://itsmycode.com/fatal-error-ineffective-mark-compacts-near-heap-limit-allocation-failed-javascript-heap-out-of-memory/
https://nuxtjs.org/docs/configuration-glossary/configuration-build/