当尝试使用npm i命令安装npm包时,我得到了以下异常:

我尝试重新安装Node.js包,并使用以下方法将代理设置为关闭:

set HTTP_PROXY=
set HTTPS_PROXY=

问题仍然存在。我哪里做错了?

更新:

执行以下命令时:

npm install --legacy-peer-deps

系统显示如下错误:


当前回答

问题似乎是gf-kautomata-pipeline-ui使用的是Angular 9,而@angular/http需要Angular 7。(@angular/http已经弃用并最终被移除,它的所有功能都被移到了@angular/common中。)

见:https://www.npmjs.com/package/@angular http

如果你运行的是Angular 9,那么

从包中删除@angular/http。json(在Angular 9中你不需要它) 确保你的package.json中有@angular/common。 运行npm i。

如果你运行的是Angular 7,那么打开你的包。检查并确保你所有的Angular包都不高于^7.0.0。你可能还需要删除gf-kautomata-pipeline-ui,或者联系gf-kautomata-pipeline-ui的作者,看看这个库是否与Angular 7兼容。

其他回答

这对我来说很管用:

npm install --save --legacy-peer-deps

您可以使用显示此错误的两种方式安装包

ERESOLVE unable to resolve dependency tree

使用npm Install并使用——legacy-peer-deps安装包

npm install --save --legacy-peer-deps

这是两个命令的组合 a.在npm config中设置legacy-peer-deps为true NPM配置设置为true b.现在使用npm install安装包 npm安装

某些包在更新到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

或者只是等待,直到这些软件包更新。

问题似乎是gf-kautomata-pipeline-ui使用的是Angular 9,而@angular/http需要Angular 7。(@angular/http已经弃用并最终被移除,它的所有功能都被移到了@angular/common中。)

见:https://www.npmjs.com/package/@angular http

如果你运行的是Angular 9,那么

从包中删除@angular/http。json(在Angular 9中你不需要它) 确保你的package.json中有@angular/common。 运行npm i。

如果你运行的是Angular 7,那么打开你的包。检查并确保你所有的Angular包都不高于^7.0.0。你可能还需要删除gf-kautomata-pipeline-ui,或者联系gf-kautomata-pipeline-ui的作者,看看这个库是否与Angular 7兼容。

在这个案子上,我遇到了问题

无法解析依赖树

在一个Angular 13项目中,它使用了Azure DevOps中私有npm提要中的一些包。

为了访问这个存储库,我创建了一个.npmrc文件。正因为如此,npm install命令将搜索我的私有存储库中的所有包,而不再是npm feed中的包。无法解决依赖树错误是因为npm install命令找不到很多托管在npm提要而不是我的私有提要中的包。

我找到了一个关于如何确定包范围的惊人答案。

在此基础上,我做了一些修改:

在我的图书馆包里。Json,更新名称有一个作用域名@mylib “名称”:“@myLib /命令队列”, 构建并将此包发布到我的私人提要 在我的客户端应用程序(使用这个包的应用程序)中,更新.npmrc文件,只对这个范围内的包使用我的私有提要 @myLib:注册表= https://pkgs.dev.azure.com/..。 always-auth = true

现在,每当我运行npm install命令时,如果包的作用域是@myLib,它就会在我的私有提要中查找它,并在所有其他情况下使用npm提要(即@angular/…)

这是我的客户端应用程序包的一个例子。json文件:

    "@angular/platform-browser-dynamic": "~13.3.0",
    "@angular/router": "~13.3.0",        <-- this comes from npm
    "@myLib/jcg-command-queue": "^2.2.0", <-- This comes from my private feed

而且,有了这个改变,就不需要再在npm install命令中添加——legacy-peer-deps了。