💻
【heroku】herokuにてデプロイエラー【The engine "node" is incompatible with this..】
エラー遭遇
かなり前に作ったrailsアプリを修正を加えてデプロイしたところ、デプロイエラーがでました。
→ https://gist.github.com/KantaFukazawa/011204df44916f04aa8f9446767585cc
(長いので読まなくていいです)
なにが原因なのか特定していこうと思います。
原因特定
かなり長いエラー文の中に、
warning " > webpack-dev-server@3.11.0" has unmet peer dependency
"webpack@^4.0.0 || ^5.0.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0".
[4/4] Building fresh packages...
error /tmp/build_4354b829/node_modules/node-sass: Command failed.
warningとerrorと怪しげなものを発見。
翻訳してみたのですが、unmet peerとの単語はおそらく存在しない(?)ので訳せませんでした。
そのため直接ググると、
複数の記事で
node-sassのバージョンがnodeのバージョンと合っていない
とあり。
問題解決
上記に対して、以下が有効とのこと
①webpackerのバージョンアップ
- gem 'webpacker', '~> 4.0' //削除
+ gem 'webpacker', '~> 5.0' //追加
②yarn.lockの削除
ファイルをそのまま消去
③package.jsonにwebpackerのバージョンを指定
次に、package.jsonに"@rails/webpacker": "5.4.3"を追記します
④yarn install
$ yarn install
しかし私の場合ここでyarnが実効できなかったので、追加でNode.jsをバージョンアップを行う。
$ nvm install --lts
//安定版で最新のNode.jsをインストール
$ npm install -g yarn
//Node.jsをバージョンアップ後yarnコマンドが使用できなくなるため、yarnも再インストール
再度
$ yarn install
⑤node-sassのバージョンををnode.jsに合わせる
$ yarn add node-sass
以上を行い再デプロイ成功!
最後に
正直全容についてはピンときてないのですが、先述のとおりnodeとnode-sassのバージョン違いによるものの様です。
Discussion