GithubActionsでERESOLVE... とエラーが出る場合の対応について

公開 : 2023.03.26
titleimage

普段から当サイトのデザイン修正や、記事投稿はGithubを介して行っています。またその際に、Github Actions を用いてサイト内検索用の検索レコードを生成しているのですが、数日前からエラーで実行できていないことがわかりました。

ログを見ると、ERESOLVE… やら npm ERR! とエラーがぎっしり。今回はGithub Actions のエラーを解決する方法について説明します。

前提条件

まず私の環境や前提として以下の様な状態でエラーが出ています。

  • ローカルで node ○○.mjs を実行した際は問題なくコードが走る
  • 今まではGithub Actions で実行できていた
  • Github Actions の上限時間などに達していない

なぜ実行できないのでしょうか? コードも見ていきましょう。

エラー内容

Github Actions で該当のスクリプト実行の様子を見てみます。

エラー箇所

Run npm i

と実行した際にエラーが発生し、そのまま終了処理が行われています。

Run npm i の中身も見てみます。

Run npm i
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR! 
npm ERR! While resolving: astro@2.1.7
npm ERR! Found: sharp@0.32.0
npm ERR! node_modules/sharp

...
...
...

Error: Process completed with exit code 1.

npm i を実行した直後から npm ERR! code ERESOLVE とエラーが発生していますね。解決方法については以下にまとめています。

npm ERR! code ERESOLVE の解決方法

Github Actionsの実行指定ymlファイル内、run: npm i の後ろに —legacy-peer-deps を追記します。

変更箇所
    - run: npm i --legacy-peer-deps

※ run npm install の場合も同様です。

変更箇所
    - run: npm install --legacy-peer-deps

npm ERR! code ERESOLVE はなぜ起きるのか?

今まで問題なかったスクリプトに npm ERR! code ERESOLVE はなぜ起きるのでしょうか?調べてみたところ、個々のパッケージ同士のバージョン関係に不整合が生じている場合に発生するようです。

例えばAパッケージはBパッケージのバージョン2.3までしか対応していないのに、バージョン2.4がインストールされているみたいな状況ですね。

不用意にpackage.jsonをアップデートしてしまうと起きる可能性が高いです。もちろんpackage.jsonは定期的にアップデートすることが望ましいですが。

おわりに

Github Actions や npm 周りは私もまだまだ知らないことが多いので、勉強しないとなぁ〜と思いました。