error
npm ERR! code ERESOLVE (依存関係エラー) のメカニズムと正しい対処法
Node.jsのプロジェクトで新しくパッケージをインストール(`npm install`)しようとした際、真っ赤な文字で「npm ERR! code ERESOLVE」や「unable to resolve dependency tree」と表示され、処理が強制終了するエラーについて解説します。
【原因:厳格化されたピア依存関係】
npm v7以降、パッケージ間の依存関係(Peer Dependencies)のバージョンチェックが非常に厳格になりました。例えば、あなたがインストールしようとしている「パッケージA」が「Reactのバージョン17」を要求しているのに対し、あなたのプロジェクト自体は「Reactのバージョン18」を使用している場合、npmは「互換性がないためシステムが壊れる可能性がある」と判断してインストールをブロックします。
【解決策とそれぞれの注意点】
1. `--legacy-peer-deps` フラグの使用(推奨)
コマンドの末尾に `--legacy-peer-deps` を付けて実行(例:`npm install パッケージ名 --legacy-peer-deps`)すると、npm v6以前と同じように厳密なバージョンチェックをスキップしてインストールを強行できます。大半のケースではそのまま動作するため、実務でも最もよく使われる回避策です。
2. `--force` フラグの使用(非推奨)
強制的にパッケージを上書きして解決を試みますが、他の依存関係まで破壊してしまうリスクがあるため、原則として使用を避けるべきです。
3. パッケージのバージョンを合わせる(根本解決)
エラーメッセージを読み解き、競合を起こしているパッケージを特定します。そのパッケージの最新版(React 18対応版など)がリリースされていれば、それを指定してインストールし直すのが最も健全な解決策です。長期間アップデートされていない古いライブラリの場合は、代替のライブラリへの乗り換えを検討する時期かもしれません。