1. ホーム
  2. javascript

[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?

2022-01-30 21:56:02

質問事項

ちょうどこのエラーに遭遇しました。

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: [email protected]
npm ERR! Found: [email protected]
npm ERR! node_modules/react
npm ERR!   react@"17.0.1" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^16.8.0" from [email protected]
npm ERR! node_modules/react-hook-mousetrap
npm ERR!   react-hook-mousetrap@"*" from the root project
npm ERR! 

私がインストールしようとしているモジュールは、私がインストールしたものとは異なるピア依存関係を持っているようです。npmがこの点で挙動を変えたようで、インストールが失敗するようになりました。

どうすればいいのでしょうか?このためにReactのバージョンを下げたくないのですが。

というフラグがあるのは知っています。 --legacy-peer-deps が、これが具体的に何をするものなのか、また、これを使うことが推奨されるのか/潜在的なデメリットは何なのか、よくわからないのです。npmがインストールを失敗させた理由があるのだと思います。

を使っていたので、不思議な感じです。 yarn は、ごく最近まですべて順調でした。

解決方法は?

この問題を解決した方法を紹介します。

まず、何が起きているのか。 react-hook-mousetrapは[email protected] を探しているのですが、見つかりません。代わりに新しいバージョンである@react17.0.1が見つかっています。何らかの理由でmousetrapはこの新しいバージョンを好まず、あなたに通知されています(大したことではありませんが、ビルドを停止させる価値があると判断されました)。

一つの解決策 の特定のバージョンを強制的にインストールします。 反応 マウストラップが望む

yarn install [email protected]

これは、reactのバージョンをmousetrapと互換性のある少し古いものにロールバックするものです。あなたは何の違いも感じないでしょうし、今後のバージョンアップでmousetrapが更新されれば、この問題は解消されることを期待します。

もう一つの解決策 古いバージョンの依存関係をインストールしないことを徹底的に決める。

npm install xxxx --legacy-peer-deps

これは、このパッケージの古い依存関係を無視するものです。より包括的で、あなたに代わって多くの決断をしてくれます。