当尝试使用npm i命令安装npm包时,我得到了以下异常:
我尝试重新安装Node.js包,并使用以下方法将代理设置为关闭:
set HTTP_PROXY=
set HTTPS_PROXY=
问题仍然存在。我哪里做错了?
更新:
执行以下命令时:
npm install --legacy-peer-deps
系统显示如下错误:
当尝试使用npm i命令安装npm包时,我得到了以下异常:
我尝试重新安装Node.js包,并使用以下方法将代理设置为关闭:
set HTTP_PROXY=
set HTTPS_PROXY=
问题仍然存在。我哪里做错了?
更新:
执行以下命令时:
npm install --legacy-peer-deps
系统显示如下错误:
当前回答
NPM可用于在项目中安装和管理依赖项的版本。
我在React版本和npm版本上也遇到了同样的问题:
NPM错误发现类型/react@16.14.20
因此,它可能是需要根据您的包安装的包版本。json文件。
它会在npm 7版本中给出错误,并且无法安装Node.js模块。
如果你将npm版本降级到6,这些问题将变成警告,问题将得到解决。
试着证明这个命令:npm install -g npm@6 检查版本是否已经安装:npm——version 删除并安装node_modules包: a)删除rm -rf node_modules b)安装:npm i
其他回答
某些包在更新到npm 7后会出现这种情况。
参数——legacy-peer-deps可以帮助:
npm i --legacy-peer-deps
此处描述legacy-peer-deps
导致npm在构建peerDependencies时完全忽略 包树,如NPM版本3到6。 如果一个包因为过于严格而无法安装 碰撞的peerDependencies,它提供了一种前进的方式 解决问题。 ...
你可以在默认情况下将这个选项设置为true (npm不推荐):
npm config set legacy-peer-deps true
或者只是等待,直到这些软件包更新。
免责声明:这假设你使用的是npm v7
注意:如果你遵循兄弟注释的指示,它将创建一个用户范围的配置,不会在队友/机器/构建机器人之间保持同步。
基于项目的遗留对等依赖
您可能希望将遗留同行deps与您的项目绑定在一起,以便它在机器/开发人员之间扩散,而不会污染您的其他项目。
npm config set legacy-peer-deps true --location project
这将创建一个本地文件在.npmrc,你可以提交到你的存储库:
legacy-peer-deps=true
然后,你就可以跑了:
npm install
然后提交更新后的锁文件。
记住,位置,位置,位置:
per-project configuration (/path/to/my/project/.npmrc, see more): npm config set legacy-peer-deps true --location project per-user configuration (defaults to $HOME/.npmrc, see more) npm config set legacy-peer-deps true --location user or, as the default location is user anyway: npm config set legacy-peer-deps true global configuration (defalts to $PREFIX/etc/npmrc, see more) npm config set legacy-peer-deps true --location global or, as --global infers --location global npm config set legacy-peer-deps true --global
对于某些项目,修复依赖关系可能不是简单的
在我的案例中,我们有一个遗留版本的关键依赖项想要引入webpack v3(!) -但这是该项目的构建依赖项。
短期内最好的解决方案是使用遗留peer-deps作为保留。
如果你在紧要关头,你也可以考虑对依赖项进行分叉,并相应地调整它的对等依赖项——它们将你的项目指向分叉。
这与HTTP代理无关。
正如上面所说,您存在依赖冲突(不正确且可能被破坏的依赖),因此尝试使用——force或——legacy-peer-deps运行该命令。如果它不生效,临时解决方案是使用以前版本的Node.js(降低Node.js版本),因为它有时会导致这种错误发生。
根据OP的更新更新:
如你所见,它触发了以下错误:
@angular/http@^9.1.4没有找到匹配的版本。
看看angular/http页面。请注意,该已弃用包的最新版本是7.2.16,而您请求的是更高版本(例如,^9.1.4)!因此,请尝试检查项目依赖关系,并根据所提出的错误来解决问题。
除了使用——legacy-peer-deps命令行选项外,还可以将其永久地设置为配置选项:
npm config set legacy-peer-deps true
重置package-lock。Json一直都很适合我:
git checkout -- package-lock.json
细节: 在更新遗留项目的所有包时,我经常遇到这种情况——我强烈不建议使用npm审计fix或npm I——force。删除包锁。Json也并不总是适用于我。回滚到包的工作版本。Json +包锁。Json和添加包对我来说是最安全、最快的变体。