アセットファイルをコンパイルしたときにエラーが出ました。
手こずりましたが、いろいろ調べて解決することができたので、記録したいと思います。
$ rails assets:precompile RAILS_ENV=production
yarn install v1.22.19
[1/5] Validating package.json...
error furima_38288@0.1.0: The engine "node" is incompatible with this module. Expected version "14.20.0". Got "14.21.1"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
上記のようにエラーが表示されました。
エラーの原因
調べた結果、Node.jsのバージョンが非互換であることが原因だと仮説を立てました。
Expected version "14.20.0". Got "14.21.1"
この文章から、
現バージョンが、"14.21.1"であることがわかります。
念のため確認
$ node -v
v14.21.1
これを"14.20.0"に変更すると解決するのでは?と考えました。
AWSのEC2上でNode.jsのバージョンをアップデートしたいとき
→nvmを使用する。
nvmの説明
nodeのバージョン管理ソフトウェアのこと。
Node Version Managerの略。
npm(node package manager)も包括していて、バージョンを切り替えるとそれに合ったnpmが適用されます。
手順① nvmをインストールする
curlコマンドでインストールします。
https://github.com/nvm-sh/nvm/blob/master/README.md#installing-and-updating
こちらを参考に、ターミナルでコマンドを実行しました。
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
手順② nvmを使えるように設定をする
. ~/.nvm/nvm.sh
手順③ Node.jsをインストールする
$ nvm install 14.20.0
今回私は、バージョン"14.20.0"をインストールしたいのでこのように記述しています。
Checksums matched!
Now using node v14.20.0 (npm v6.14.17)
このように返ってきました。
手順④ 現在のバージョンを確認する
$ node -v
v14.20.0
無事に指定したバージョンに変更することができました。
このあと、実行したかった
$ rails assets:precompile RAILS_ENV=production コマンドを実行し、無事にアセットファイルをコンパイルすることに成功しました。
調べ方が下手くそだったのか、結構時間がかかってしまいました。
誰かの参考になれば嬉しいです。
参考文献
https://qiita.com/shinjimjim/items/905885f797465db09504
ありがとうございました。