我用的是Windows 10, Node 5.6.0和npm 3.6.0。我试图安装角材料和mdi到我的工作文件夹。NPM安装角材质mdi错误:

+-- angular@1.5.0

+-- UNMET PEER DEPENDENCY angular-animate@^1.5.0

+-- UNMET PEER DEPENDENCY angular-aria@^1.5.0

+-- angular-material@1.0.6

+-- UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57

npm WARN enoent ENOENT: no such file or directory, open
'C:\Users\xxxxx\Desktop\ngClassifieds\package.json' 

npm WARN angular-material@1.0.6 requires a peer of
angular-animate@^1.5.0 but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of angular-aria@^1.5.0
but none was installed. 

npm WARN angular-material@1.0.6 requires a peer of
angular-messages@^1.5.0 but none was installed.

如何解决这个问题来安装AngularJS材质和MDI ?


当前回答

如果你想保留angular的当前版本,你可以访问这个版本兼容性检查器来检查哪个版本的angular-material最适合你当前的angular版本。你也可以使用角材料兼容性检查角材料的对等依赖关系。

其他回答

如果你使用的是npm v6或之前版本,你会得到这个警告。在npm v7.0之后,npm开发团队声明他们将自动安装对等依赖项。因此,现在您不希望手动安装对等依赖项。

你可以使用这个命令安装npm v7.0。

npm install -g npm@7

要了解更多关于npm v7.0的信息,请参阅这篇由Github blog发布的博文。

NPM不再安装对等依赖项,所以你需要手动安装它们,只需要在需要的deps上进行NPM安装,然后尝试再次安装主deps。


回复评论:

就在这条信息里,上面写着你缺哪一节课

UNMET PEER DEPENDENCY angular-animate@^1.5.0 +-- 
UNMET PEER DEPENDENCY angular-aria@^1.5.0 +-- angular-material@1.0.6 +
UNMET PEER DEPENDENCY angular-messages@^1.5.0 `-- mdi@1.4.57` 

所以你需要npm安装angular angular-animate angular-aria angular-material angular-messages mdi

好吧,我挣扎了很长一段时间试图弄清楚这个问题。当你用尽了所有其他方法时,这里有一个核选项。

在你的电脑上创建一个新文件夹。 下载一个全新的angular安装-我使用的是这个指南:https://coursetro.com/posts/code/55/How-to-Install-an-Angular-4-App 运行它,确保它能工作 然后从软件包中逐一安装您的依赖项。json文件 在每个安装完成后运行它

当您完成后,它仍然可以工作,将实际代码导入到这个新项目中。修复由新版本angular引起的编译错误。

这对我来说很重要。1个小时的返工vs 6个小时试图找出哪里错了。真希望我一开始就这么做。

编辑2020

从npm v7.0.0开始,npm自动安装对等依赖项。这是升级到v7的原因之一。

https://github.blog/2020-10-13-presenting-v7-0-0-of-the-npm-cli/

本页也很好地解释了对等依赖的基本原理。 https://github.com/npm/rfcs/blob/latest/implemented/0025-install-peer-deps.md


这个答案并不适用于所有情况,但如果你不能通过简单地输入npm install来解决这个错误 ,这些步骤可能会有所帮助。

假设你得到了这个错误。

UNMET PEER DEPENDENCY packageA@4.2.0

npm WARN packageB@3.3.0 requires a peer of packageA@^3.1.0 but none was installed.

这意味着您安装了packageA的4.2.0版本,但packageB@3.3.0需要版本3.x。x的包。(^的解释)

因此,您可以通过将packageA降级到3.x来解决这个错误。X,但通常您不希望降级包。 好消息是,在某些情况下,packageB只是跟不上packageA, packageB的维护者正在努力将packageA的对等依赖关系提高到4.x.x。 在这种情况下,你可以在npm或github中检查是否有更高版本的packageB需要packageA的4.2.0版本。

例如,进入发布页面

通常情况下,你会发现类似这样的依赖性变化。

packageB v4.0.0-beta.0

BREAKING CHANGE
package: requires packageA >= v4.0.0

如果在发布页面上没有找到任何内容,请转到issue页面,并通过关键字搜索issue,例如peer。你可能会找到有用的信息。

此时,您有两个选择。

升级到需要的版本 请暂时保留错误,等待稳定版本发布。

如果你选择option1: 在很多情况下,版本没有最新标签,因此不稳定。所以你必须检查在这次更新中有什么改变,并确保任何东西都不会崩溃。

如果你选择option2: 如果pakageA从版本3升级到版本4很简单,或者pakagb的维护者还没有测试pakageA的版本4,但说应该没有问题,那么您可以考虑留下这个错误。

在这两种情况下,最好彻底测试它是否没有破坏任何东西。

最后,如果你想知道为什么你必须手动做这样的事情,这个链接解释得很好。

今天可用的Angular 2 rc。7,我有类似的问题rxjs@5.0.0-beta.12 UNMET PEER DEPENDENCY。

如果你像我一样,简单地替换掉@angular/…rc。6到@angular/…rc。7 -这还不够。因为,例如,@angular/router没有rc。6版本。

在这种情况下,更好的审查包。快速入门中的json