如何修复npm UNMET PEER DEPENDENCY警告?

时间:2016-03-02 04:09:43

标签: angularjs node.js npm npm-install angularjs-material

我在Windows 10上,使用Node 5.6.0和npm 3.6.0。我正在尝试将angular-material和mdi安装到我的工作文件夹中。 npm install angular-material 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 Material和MDI?

13 个答案:

答案 0 :(得分:170)

npm不再安装对等依赖项,因此您需要手动安装它们,只需在所需的deps上执行npm install,然后再尝试安装主要的。

回复评论:

在这条信息中是正确的,它说明了你缺少哪些代表

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 install angular angular-animate angular-aria angular-material angular-messages mdi

答案 1 :(得分:61)

如果未满足UNMET PEER DEPENDENCY文件中指定的一个或多个模块的依赖项,则会引发

package.json错误。 仔细检查警告并使用正确的依赖项版本更新package.json文件。

然后运行

rm -rf node_modules/
npm cache clean
npm install

这将正确安装所有必需的依赖项。

答案 2 :(得分:24)

在我的情况下,所有的依赖都已存在。在这种情况下,请更新 NPM ,因为它可能已经崩溃了。它解决了我的问题。

npm install -g npm

答案 3 :(得分:14)

npm-install-peers为我工作。

npm install -g npm-install-peers

答案 4 :(得分:5)

此错误的最可能原因之一可能是您已在package.json中定义了旧版本。要解决此问题,请更改package.json中的版本以匹配npm抱怨的那些。

完成后,运行npm install并瞧!!

答案 5 :(得分:3)

好的,所以我努力想要解决这个问题很长时间。这是选项,因为当你用尽所有其他方式时......

完成后,它仍然有效,将您的实际代码导入到这个新项目中。修复任何编译错误更新版本的角度原因。

这对我来说是什么.. 1小时的返工与6小时试图找出wtf是错误的..希望我这样开始做..

答案 6 :(得分:2)

今天可用 Angular 2 rc.7 ,我与@angular/...rc.6 UNMET PEER DEPENDENCY有类似的问题。

如果您和我一样,只需将@angular/...rc.7替换为@angular/router - 这还不够。例如,rc.6没有height:auto; 版本。

在这种情况下,请在快速入门

中更好地审核package.json

答案 7 :(得分:2)

此答案并不适用于所有情况,但是如果您无法通过简单地输入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需要pakageA的版本3.x.x。 (explanation of ^

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

例如,转到发布页面enter image description here

通常,您会发现关于依赖性的重大变化。

packageB v4.0.0-beta.0

BREAKING CHANGE
package: requires packageA >= v4.0.0

如果在发布页面上找不到任何内容,请转到发布页面并按peer之类的关键字搜索问题。您可能会找到有用的信息。

enter image description here

这时,您有两个选择。

1)升级到所需的版本
2)暂时留下错误,请等待稳定版本发布。

如果选择option1:
在许多情况下,该版本没有latest tag,因此不稳定。因此,您必须检查此更新中发生了什么更改,并确保所有内容都不会中断。

如果选择option2:
如果将pakageA从版本3升级到4是微不足道的,或者如果pakageB的维护者尚未测试pakageA的版本4,但表示应该没问题,则可以考虑保留该错误。

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

最后,如果您想知道为什么必须手动执行此操作,请this link explains well.

答案 8 :(得分:0)

给定的答案不会一直有效。如果它不能解决您的问题。确保您在package.json中使用了正确的符号。这对解决这个问题非常重要。例如:

warning " > @angular/compiler-cli@5.2.7" has incorrect peer dependency "typescript@>=2.4.2 <2.7".
warning " > tsickle@0.25.6" has incorrect peer dependency "typescript@>=2.4.2 <2.6".

所以我的打字稿需要介于2.4.2和2.6之间吗?

所以我将我的打字稿库从使用"typescript": "^2.7"更改为使用"typescript": "^2.5"。似乎正确吗?

错误。

^表示您可以使用"typescript": "2.5""2.6""2.7"等方式使用npm ...

如果您想了解^~的含义,请参阅:What's the difference between tilde(~) and caret(^) in package.json?

此外,您必须确保包存在。也许没有"typescript": "2.5.9"查找包裹号码。要真正安全,只需删除~^,如果您不想阅读它们的含义。

答案 9 :(得分:0)

如果您使用的是npm v6或更低版本,则会收到此警告。在npm v7.0之后,npm开发团队已声明他们将自动安装对等依赖项。因此,现在您不想手动安装对等依赖项。

您可以使用此命令安装npm v7.0,

npm install -g npm@7

this blog post中了解有关npm v7.0的更多信息,该文件由Github Blog发布。

答案 10 :(得分:0)

如果您希望保留当前版本的 angular,您可以访问此 version compatibility checker 以检查哪个版本的 angular-material 最适合您当前的 angular 版本。您也可以check peer dependencies of angular-material using angular-material compatibility

答案 11 :(得分:0)

尝试修复依赖项上的安全漏洞问题时也会出现此问题。

这是我所做的: 审核已安装的依赖项

npm audit

如果有可用的修复程序,在大多数情况下运行以下命令可以解决问题:

npm audit fix

有些问题会有 SEMVER WARNING,点击链接会提示我们如何进行人工审核和/或下一步做什么。

做更多的研究让我发现了这个命令:

npm upgrade

似乎 npm audit fix 没有考虑更新对等依赖项,而运行 npm upgrade 将修复未满足的对等依赖项。 现在检查我们是否通过运行解决了问题:

npm list

这将为我们提供项目的所有依赖项,并警告我们任何未满足的 peer deps 错误。如果您没有安全漏洞问题,升级在大多数情况下实际上比保留您正在使用的旧版本软件包要好。npm install 也是一个可行的选择。

答案 12 :(得分:-5)

您可以通过全局安装UNMET依赖关系来解决。

示例:npm install -g @ angular / common @ 4.4.6

逐个安装。 它对我有用。