🆘

トラブルシューティングの備忘録

2024/01/14に公開

トラブルシューティングの備忘録

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory

EC2インスタンスにおいてvueのbuildをして

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
でこけたときのメモ。

ビルドコマンドを以下のように変更する

"build": "NODE_OPTIONS='--max-old-space-size=4096' vue-cli-service build --mode production",

このコマンドによって、単純にbuildしている時に使用しているメモリの上限を上げることができる

swap容量を増やす。

sudo su
dd if=/dev/zero of=/swapfile bs=1M count=1024
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

をして増やす。

ただ注意点としては、追加で実行する際にはswapfile名に気を付ける。同じ名前で実行すると意味もなく使用できる容量が減っていくように見える。
上書きされた容量を取り戻す方法があるのかは不明。。。

以下確認コマンド

swapon --show
free

error:0308010C

このエラーは主にdev環境で起きる。nodeのバージョンがおかしいらしいので、その対応をする必要がある。
Dockerファイルに

ENV NODE_OPTIONS="--openssl-legacy-provider"

を記載して、

"build": "NODE_OPTIONS='--max-old-space-size=4096 --openssl-legacy-provider' vue-cli-service build --mode production",

とすれば基本的には問題ないはず。
ちなみに、本番環境では、nodeをダウンロードしたタイミング(buildしたタイミング)が古いので、基本的には起きないはず。

GitHubで編集を提案

Discussion