プロジェクトのシナリオ:
npm または Yarn を使用してサードパーティのパッケージをインストールします。
問題の説明
npmコマンドとyarnコマンドを混在させると、インストールパッケージの競合が発生します。
E:\WorkSpace\react\zhuangao_05\dome_01>npm i echarts echarts-for-react
npm ERR! code ERESOLVE
npm ERR! ERESOLVE could not resolve
npm ERR!
npm ERR! While resolving: @jiaminghi/[email protected]
npm ERR! Found: [email protected]
npm ERR! node_modules/react
npm ERR! peer react@">=16.0.0" from @ant-design/[email protected]
npm ERR! node_modules/@ant-design/cssinjs
npm ERR! @ant-design/cssinjs@"^1.3.0" from [email protected]
npm ERR! node_modules/antd
npm ERR! antd@"^5.0.4" from the root project
npm ERR! peer react@">=16.0.0" from @ant-design/[email protected]
npm ERR! node_modules/@ant-design/icons
npm ERR! @ant-design/icons@"^4.7.0" from [email protected]
npm ERR! node_modules/antd
npm ERR! antd@"^5.0.4" from the root project
npm ERR! @ant-design/icons@"^4.8.0" from the root project
npm ERR! 53 more (@ant-design/react-slick, @rc-component/portal, ...)
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^16.8.0" from @jiaminghi/[email protected]
npm ERR! node_modules/@jiaminghi/data-view-react
npm ERR! @jiaminghi/data-view-react@"^1.2.5" from the root project
npm ERR!
npm ERR! Conflicting peer dependency: [email protected]
npm ERR! node_modules/react
npm ERR! peer react@"^16.8.0" from @jiaminghi/[email protected]
npm ERR! node_modules/@jiaminghi/data-view-react
npm ERR! @jiaminghi/data-view-react@"^1.2.5" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See C:\Users\86158\AppData\Local\npm-cache\eresolve-report.txt for a full report.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\86158\AppData\Local\npm-cache\_logs\2023-01-09T06_13_18_485Z-debug-0.log
原因分析:
同期が失われるリスクがあるため、
yarn.lock
とファイルをまとめるのが困難になる場合があります。インストールで生成されたファイルは時間が大幅に遅れているため、 のパッケージ バージョンがのパッケージ バージョンよりも低くなります。?xxx の形式で定義されたパッケージのバージョンは、期間によって一貫性がないためです。@babel/preset-env バージョンをインストールします: "7.5.5"、"^7.4.5"、実際にインストールされているバージョンは "7.5.5" です。パッケージのインストールと矛盾しますYarn と npm は互換性があります。毎回同じものを使用する限り、両者に違いはありません。これらはインストール ディレクトリが異なるため、一緒に使用することはできません。Yarn はパッケージをインストールしますが、npm がそれを見つけられません。npm はパッケージをインストールしますが、yarn がそれを見つけられませんpackage.lock
yarn install
yarn.lock
npm install
package-lock.json
yarn.lock
package-lock.json
yarn
npm
yarn
解決:
1、npm i xxx --legacy-peer-deps
npm i xxx --legacy-peer-deps
コマンドを使用して依存関係をインストールしてください。
なぜ?効果?
npm install xxxx --legacy-peer-deps コマンドは、npm に何をすべきかを指示するのではなく、npm に何をしてはいけないかを指示する方が適切です。
レガシーとは、legacy/(ソフトウェアまたはハードウェア) は廃止されましたが、使用範囲が広いため置き換えが困難であること、および npm install xxxx --legacy-peer-deps コマンドを使用して、peerDependency での依存関係の自動インストールをバイパスすることを意味します。 npm に無視するように指示します。プロジェクトに導入されたさまざまな依存モジュールは、同じだが異なるバージョンに依存しており、npm v3 ~ v6 の方法でインストール操作を続行します。
したがって、実際には、このコマンドは競合を実際には解決しませんが、競合を無視して「古い」(v3 ~ v6) 方法でダウンロード操作を実行します。
2. npm インストールの依存関係に関連するすべてのファイルを削除します。
削除後、再度 npm i を実行して必要なサードパーティ パッケージをインストールします。
ファイルの競合を防ぐには、一貫したコマンドを使用してサードパーティ ライブラリをインストールします。