はじめに
AWSの無料枠であるt2microでEC2を作成した際、Reactのビルド処理がストップしてしまうことがあります。そんな時は以下のことを試してみることで解決できることがありますので、自分の備忘録のため記載しておきます。同じように困った方のお役に立てれば幸いです。
原因
t2microのようなメモリが少ないインスタンスタイプの場合、多くのメモリを必要とするビルド処理が行えない場合があります。
私はReactアプリを起動するためにnpm run buildを行なったところ、処理がいつまでも終わらず苦労しておりました。。
対策
上記のような事象があった場合、スワップメモリを増やして回避するようにします。
スワップメモリの設定を行うことで、メモリを多く必要とする処理も動くようになることがあります。
# 4GBのスワップファイルを作成(メモリが少ないのでbsが多いと失敗する)
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
# 読み書き権限の設定
$ sudo chmod 600 /swapfile
# スワップ領域のセットアップ
$ sudo mkswap /swapfile
# スワップ領域を有効化
$ sudo swapon /swapfile
# スワップ領域の確認
$ sudo swapon -s
スワップ領域の設定後もnpm run buildが動かない場合
スワップ領域設定後も、npm run buildが動かなかった場合、yarn buildにすることで解決できることがあります。
私の場合、npm run buildでどうしてもビルドできなかったため、yarnでのビルドを実行したら解決できました。
# yarn のインストールを行う
$ npm -g install yarn
# yarnを更新
$ yarn install
# yarnでビルドを行う
$ yarn build
これでも解決できない場合
上記の場合でも解決できない場合、EC2のインスタンスタイプを上位のものにすることを検討してみましょう。ただ、AWSの無料枠から外れてしまうので、料金との相談になりますが、、、。お財布との相談ですね。。笑