package.json覆盖依赖项和同行依赖项。

8
在我的一个项目中运行 npm i 命令时,出现了以下错误:
npm ERR! Found: react@17.0.2
npm ERR! node_modules/react
npm ERR!   react@"^17.0.2" from the root project
npm ERR! 
npm ERR! Could not resolve dependency:
npm ERR! peer react@"^16.13.1" from react-qr-barcode-scanner@1.0.6
npm ERR! node_modules/react-qr-barcode-scanner
npm ERR!   react-qr-barcode-scanner@"*" 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.

我已经阅读了有关在 package.json 中使用 overrides 属性的内容,但似乎这只适用于覆盖“常规”依赖项。

我也知道可以像错误提示那样运行 npm i --legacy-peer-deps,但我不禁想知道:

有没有一种方法能够重写依赖项对等版本而不需要 --legacy-peer-deps


你希望覆盖什么?react-qr-barcode-scanner包是你的项目的直接依赖还是传递依赖(依赖于其他依赖)?该包似乎已被放弃。有一个错误报告要求支持React 17,其中有人制作了一个分支 - Phil
1
@LiuNate 祝你赶紧解决这个悬赏问题。这个问题需要澄清,而且原帖作者已经五年没有回复了。 - Phil
我看到这个问题只有3个月前被问过。我也有同样的担忧,我的npm v8不能覆盖peerDeps,而且npm install永远无法成功解决那些深层依赖中的冲突peerDeps。 - Liu Nate
3
@Phil,这个问题只是三个月前提出的,现在是2022年5月17日,而不是2017年5月。只是为了澄清,我也还没有找到一个合适的答案。我目前的解决方案是使用“--legacy-peer-deps”标志,但这并不是最理想的解决方案。 - Luïs
或者只是为那个开源项目做出贡献,真是双赢。 - Liu Nate
显示剩余3条评论
2个回答

0

-1

npm update ; npm i --force

其次,你的下一个选项是清除 package.json,并运行 npm init。尝试安装所有依赖的最新版本,并且只在绝对必要时进行升级。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接