JavaScript heap out of memory が発生したときに試したこと
この記事は Gaji-Labo Advent Calendar 2019 17日目の記事です。
おはようございます。Gaji-Labo 鈴木です。
今回は、開発中に yarn test
を実行したら JavaScript heap out of memory
が発生し、少しハマったので解決方法をメモしておきます。
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
試したこと
- エラーメッセージでググり解決策を探す
node --max-old-space-size=4096 yarn test
などのコマンドを複数試す- 一応ブランチ変えてメインブランチで試す(が、変化なし)
解決方法
slack で「テスト回せないよー」とぼやいていたら @neotag が以下のコメントをくれました。
neotag [12:54 PM]
.zshrc とかに NODE_OPTIONS 指定してターミナル起動しなおすとどうですか?export NODE_OPTIONS="--max-old-space-size=2048"
max-old-space-size はよしなに多めにしてもらって。
試してみると、無事テストが回せた!max-old-space-size
を 2048 から 1024 に変更して再度試しても問題なくテストが回せたので一旦1024にしておきました。
また、 .zshrc
で指定せずに以下の方法でもよさそうです。
$ NODE_OPTIONS="--max-old-space-size=1024" yarn test
うまくいかなかった原因
node --max-old-space-size=4096 yarn test
これで解決できなかったのは node 宛に引き渡した option が yarn に渡ってなかったからです。yarn test
を叩いて、実際に実行されるコマンドは jest
でした。
そこを見落としていたので、 option は渡したつもりでいるし、なのに何も変わらない。。状態になっていました。
option 指定がうまくいかない時は、 その指定が本当に必要なところに届いているか を確認すると、少し早く解決できそう!という学びを得ました。
(余談ですが)
今回は「手元で yarn test
が実行できない」でしたが、それ以外にもなにかでハマりそうな時は slcak にスレッド形式でログを残すようにしています。
ハマっている時間や参照したドキュメント、試したコマンドなどが分かるので結構いいです!
今すぐの転職でなくてもOKです!まずはお話しませんか?
現在弊社では一緒にお仕事をしてくださるエンジニアさんやデザイナーさんを積極募集しています。まずはカジュアルな面談で、お互いに大事にしていることをお話できたらうれしいです。詳しい応募要項は以下からチェックしてください。
- React, Next.js を得意とするフロントエンドエンジニア募集要項
- シニアクラスのフロントエンドエンジニア募集要項
- 抽象的な物事を具体的な機能にビジュアライズできるUIデザイナー募集要項
- UIデザイナーとして手ざわりのいいUIを作りたい業務委託パートナーさん募集(Wantedly)
パートナー契約へのお問い合わせもお仕事へのお問い合わせも、どちらもいつでも大歓迎です。まずはオンラインでの面談でお話しましょう。ぜひお気軽にお問い合わせください!
話をしてみたい!