EASYBOT GUIDE
npm ERESOLVE dependency treeエラーの解決方法
npm installでERESOLVE unable to resolve dependency treeが出る時に、peerDependenciesの競合を確認して安全に直す方法を解説します。
ERESOLVEは、npmが互換性のある依存関係の組み合わせを解決できなかった時に発生します。多くはpeerDependenciesの要求バージョンと、プロジェクトに指定されたバージョンの衝突です。
エラーの競合箇所を読む
出力には現在のパッケージと、相手が要求するpeer依存のバージョンが示されます。末尾のコマンドだけを実行するのではなく、どの2つが合わないかを確認します。
- FoundとCould not resolveの行を見る
- npm explainで依存元を確認する
- Node.jsとnpmのバージョンも記録する
互換バージョンを選ぶ
直接依存するライブラリ同士が対応するバージョンを選び、package.jsonを修正します。更新後はpackage-lock.jsonを作り直す前に、変更差分と更新範囲を確認します。
- 公式の互換性情報とリリースノートを確認する
- 関連パッケージを対応する組み合わせへ更新する
- ロックファイルの差分をレビューする
回避オプションの注意
legacy-peer-depsはpeer依存の検証を緩めます。導入を通すだけで実行時の非互換性を直すわけではないため、恒久対応として安易に固定しないでください。
- オプション使用の理由を記録する
- 起動と主要機能のテストを実行する
- 後で互換バージョンへ移行する計画を立てる
ホスティング上での対策
ローカルと本番でNode/npmのバージョンを合わせ、ロックファイルに基づいた再現可能な導入を行います。毎回package.jsonが変わっていないのに依存を更新しないようにします。
- Node.jsの実行バージョンを固定する
- npm ciなどロックファイル準拠の導入を使う
- 必要な依存だけを本番環境へ入れる