覆盖对等依赖项时出错 - npm install Reactstrap

kri*_*ary 10 javascript npm reactjs reactstrap

"@popperjs/core": "^2.6.0",
"@testing-/jest-dom": "^5.11.9",
"@testing-/react": "^11.2.3",
"@testing-/user-event": "^12.6.2",
"bootstrap": "^4.6.0",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-scripts": "4.0.1",
"react-transition-group": "^4.4.1",
Run Code Online (Sandbox Code Playgroud)

我在 package.json 文件中拥有的依赖项的版本。

G:\Projects\React\confusion> npm install --save Reactstrap

npm WARN ERESOLVE 覆盖对等依赖
npm WARN 发现:react@17.0.1
npm WARN node_modules/react
npm WARN Peer React@" " from @testing-/react@11.2.3
npm WARN node_modules/@testing-/react
npm WARN @testing -/react@"^11.2.3" 来自根项目
npm WARN 3 more (react-dom、根项目、reactstrap)
npm WARN
npm WARN 无法解析依赖关系:
npm WARN Peer React@"0.14.x || ^ 15.0.0 || ^16.0.0" 来自react-popper@1.3.7
npm 警告node_modules/react-popper
npm 警告react-popper@"^1.3.6" 来自reactstrap@8.9.0
npm 警告node_modules/reactstrap
npm ERR !代码 ERESOLVE
npm 错误!ERESOLVE 无法解析依赖树
npm 错误!npm 错误!发现:react@17.0.1
npm 错误!node_modules/react
npm 错误!
来自@testing-/react@11.2.3
npm 的同行react@" " 错误!node_modules/@testing-/react
npm 错误!来自根项目
npm 的 @testing-/react@"^11.2.3" 错误!来自react-dom@17.0.1的同行react@“17.0.1”
npm错误!node_modules/react-dom
npm 错误!来自 @testing-/react@11.2.3












npm的同行react-dom@" " 错误!node_modules/@testing-/react npm 错误!来自根项目 npm 的 @testing-/react@"^11.2.3" 错误!来自根项目 npm 的 React-dom@"^17.0.1" 错误!还有 1 个 (reactstrap) npm 错误!还有 2 个(根项目,reactstrap) npm 错误! npm 错误!无法解决依赖关系: npm ERR!来自 create-react-context@0.3.0 npm 的对等反应@“^0.14.0 || ^15.0.0 || ^16.0.0” npm 错误!node_modules/react-popper/node_modules/create-react-context npm 错误!来自react-popper@1.3.7 npm 的create-react-context@"^0.3.0" 错误!node_modules/react-popper npm 错误!node_modules/reactstrap npm 错误!来自根项目npm 的Reactstrap@"
" 错误!npm 错误!修复上游依赖冲突,或者重试
npm ERR!此命令带有 --force 或 --legacy-peer-deps
npm ERR!接受不正确的(并且可能损坏的)依赖关系解析。

Zac*_*ger 20

这是由于 npm 版本 7 中的更改所致。请参阅此处的重大更改部分。您可以使用错误告诉您在底部使用的标志来修复它:npm i reactstrap --legacy-peer-depsnpm ls reactstrap如果您的其他依赖项之一已经将 Reactstrap 作为对等依赖项,则由于 v7 中的更改,您可能根本不需要安装它(您可以使用 进行检查)。


MoO*_*oOx 13

在你的中尝试这样的事情package.json

  "engines": {
    "npm": ">=8.7.0"
  },
  "overrides": {
    "react": "$react"
  }
Run Code Online (Sandbox Code Playgroud)

这将强制 React 成为您"dependencies"为所有依赖项(以及 deps 的 deps)定义的版本。你需要“最近的”npm,因为它在某些版本中存在错误(我有 8.3.0 并且覆盖不起作用)。8.7.0 看起来还可以!

请参阅https://docs.npmjs.com/cli/v8/configuring-npm/package-json#overrides


udo*_*san 9

两种方法可以解决这个问题。

方法一:

您可以--legacy-peer-deps在安装新软件包时指定标志。

# For NPM
npm install package_name --legacy-peer-deps

#For Yarn
yarn add package_name --legacy-peer-deps
Run Code Online (Sandbox Code Playgroud)

方法二:

如果您不想--legacy-peer-deps每次为项目安装新包时都指定该标志。

您只需在项目的根目录中创建一个文件即可。文件名将为.npmrc(对于 NPM)或.yarnrc(对于 Yarn)。更新文件如下:

为了.npmrc

legacy-peer-deps=true
Run Code Online (Sandbox Code Playgroud)

为了.yarnrc

npmClientArgs: "--legacy-peer-deps"
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助:)