💻

【heroku】herokuにてデプロイエラー【The engine "node" is incompatible with this..】

2022/01/21に公開

エラー遭遇

かなり前に作った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