ERESOLVE unable to resolve dependency tree
npmで依存関係の競合が解決できない場合に発生するエラー
概要
ERESOLVE unable to resolve dependency tree は、npm 7以降でパッケージの依存関係に競合がある場合に発生するエラーです。異なるパッケージが同じ依存関係の異なるバージョンを要求している場合に発生します。
エラーメッセージ
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: my-project@1.0.0
npm ERR! Found: react@18.2.0
npm ERR! node_modules/react
npm ERR! react@"^18.2.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^17.0.0" from some-library@1.0.0
npm ERR! node_modules/some-library
npm ERR! some-library@"^1.0.0" from the root project
原因
- peer依存関係の競合: パッケージが異なるバージョンを要求
- メジャーバージョンの不一致: React 17とReact 18など
- 古いパッケージ: 最新の依存関係に対応していないライブラリ
- npm 7以降の厳格化: npm 6以前より厳格なチェック
解決策
1. –legacy-peer-depsオプションを使用
| |
.npmrcに設定:
| |
2. –forceオプションを使用
| |
注意: –forceは依存関係の問題を無視するため、実行時エラーが発生する可能性があります。
3. 依存関係のバージョンを調整
package.json:
| |
4. overridesで依存関係を上書き(npm 8.3+)
| |
特定パッケージの依存のみ上書き:
| |
5. node_modulesとpackage-lock.jsonを削除して再インストール
| |
6. 競合パッケージのバージョンを確認
| |
7. パッケージを最新版に更新
| |
8. 代替パッケージを検討
問題のあるパッケージが更新されていない場合:
| |
9. peerDependenciesをdevDependenciesに追加
| |
10. npm 6にダウングレード(最終手段)
| |
npm vs yarn vs pnpm
| |
予防策
package.jsonでバージョンを固定
| |
package-lock.jsonをコミット
| |
engines フィールドでNode.jsバージョンを指定
| |
デバッグ情報
| |
Node.js の他のエラー
この記事は役に立ちましたか?