gpt4 book ai didi

javascript - npm install --legacy-peer-deps 究竟做了什么?什么时候推荐/什么是潜在的用例?

转载 作者:行者123 更新时间:2023-12-04 04:27:10 28 4
gpt4 key购买 nike

刚刚遇到这个错误:

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直到最近,一切都很好。

最佳答案

TL;博士:
如果您从 NPM v6/Node v12 升级,您可能会得到这个答案。

  • NPM v7+ 安装 peerDependencies by default ;这是不是 以前版本的 NPM 的情况。
  • NPM 模块必须命名 特定版本 他们的 peerDependencies
  • 如果您已经安装了 peerDependency,但没有使用模块命名的版本,那么 NPM v7+ 将抛出错误
  • 添加 --legacy-peer-deps忽略此新要求,冒着引入重大更改的风险

  • --legacy-peer-deps 从 NPM v4 到 v6 恢复 peerDependency 安装行为
    思考这个标志的一种方式是它没有做新的事情。而是告诉 NPM 不要做新的事情,因为 NPM v7 现在默认安装 peerDependencies .
    在许多情况下,这会导致版本冲突,从而破坏安装过程。 --legacy-peer-deps标志是在 v7 中引入的,作为绕过 peerDependency 自动安装的一种方式;它告诉 NPM 忽略对等部门并继续安装。 这就是 NPM v4 到 v6 过去的情况。
    如果您不清楚常规部门和对等部门之间的区别,这里有一些上下文:
    依赖与对等依赖
    依赖: NPM 模块在生产中工作所需的库或模块。 (示例:我最近构建了一个饼图模拟库,它使用 Chance.js 来计算指定范围内的随机数;因此,Chance 是我模块的依赖项。)
    peerDependencies :对等依赖项是模块设计用于使用的第三方软件库的特定版本或一组版本。它们在概念上类似于浏览器扩展和浏览器之间的关系。 (例如: react-redux 有两个非常合乎逻辑的 peerDependencies: reactredux。)
    这个问题部分是由 React v17 驱动的
    由于大量模块没有专门添加 React v17 作为 peerDependency,现在遇到 unable to resolve dependency tree 是司空见惯的事情。在 v17 React 应用程序中运行 npm installs 时出错。
    每当一个模块(或它自己的任何依赖项)将 React 的早​​期版本列为 peerDependency 而没有特别包括 React v17 时,就会触发此错误。
    (注意:任何其他框架或库的主要版本更新都会发生类似的行为。)
    如何检查任何给定模块的 peerDependencies
    NPM 本身不会在给定模块的页面上列出对等部门。但是,有一个简单的解决方法可以在安装之前或之后检查对等部门。只需运行: npm info name-of-module peerDependencies此命令将返回每个 peerDependency 的名称以及所有兼容版本。

    关于javascript - npm install --legacy-peer-deps 究竟做了什么?什么时候推荐/什么是潜在的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66239691/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com