刚刚遇到这个错误:

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! 
npm ERR! While resolving: nexttwin@0.1.0
npm ERR! Found: react@17.0.1
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 react-hook-mousetrap@2.0.4
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英镑,一切都很好.

推荐答案

下面是我如何解决这个问题的:

First, what's happening:个钩子捕鼠器正在寻找react@16.8.0,但它没有找到它.相反,它找到了@react17.0.1,这是一个较新的版本.出于某种原因,捕鼠器不喜欢这个新版本,并且会通知您(这没什么大不了的,但他们认为值得停止您的构建).

One solution:强制安装捕鼠器想要的特定版本的react:

yarn add react@16.8.0

这样做的目的是将react版本回滚到与捕鼠器兼容的稍旧版本.你不会注意到任何不同,在future 的迭代中,希望捕鼠器会更新,所以这就消失了.

Another solution:做出全面决定,不安装任何旧版本依赖项:

npm add xxxx --legacy-peer-deps

这样做的目的是忽略此包的旧依赖项.它更全面,为你做很多决定.

Node.js相关问答推荐

如何在Node js中从MongoDB获取特定数据,使用GET方法?

可以删除一个mongodb catch块

如何使用Node.js、Express和Mongoose创建多个API

无法将示例 Node.js 应用程序部署到 AWS Elastic Beanstalk

nyc 代码覆盖不适用于 NodeJs Express 服务器

MongoDB - 查找查询以判断是否存在少量字段,结合字段上的 AND

如何使用 node 在 koa.js 中发送响应

Mongodb 从文档中获取聚合结果中的特定属性

MongoDB Atlas中的聚合触发器不起作用

带有事件网格的 Azure 函数在没有 ngrok 的情况下在本地运行

仅显示用户在 Reactjs 中使用服务器端发布的帖子是 Node Js、Mongodb

Firestore promise 在退货前等待产品详细信息

yarn.lock 和 npm 的 package-lock 有什么区别?

这到底是什么';拒绝未经授权';对我来说是什么意思?

如何将使用 Gulp 的 node 部署到 heroku

Mongoose:查找、修改、保存

npm publish 导致'错误:EPERM:不允许操作,取消链接...',errno -4048

如何使用 cookie 创建 HTTP 客户端请求?

Node.js:如何附加到正在运行的进程并使用控制台调试服务器?

在 Node.js 中混合使用 JavaScript 和 TypeScript