如何修复npm UNMET PEER DEPENDENCY警告?

我用的是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 ?

387089 次浏览

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


回复评论:

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

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

今天可用Angular 2 rc.7,我有类似的问题与rxjs@5.0.0-beta.12未满足PEER依赖。

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

在这种情况下,最好在快速启动中查看package.json

UNMET PEER DEPENDENCY错误在package.json文件中指定的一个或多个模块的依赖关系不满足时抛出。 仔细检查警告并将package.json文件更新为依赖项的正确版本

然后运行

rm -rf node_modules/
npm cache clean
npm install

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

npm-install-peers对我有用。

npm install -g npm-install-peers

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

一旦完成,运行npm install,瞧!!

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

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

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

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

npm install -g npm

给出的答案并不总是有效的。如果这不能解决你的问题。确保你在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".

所以我的typescript需要在2.4.2到2.6之间?

所以我把我的typescript库从使用"typescript": "^2.7"改为使用"typescript": "^2.5"。看起来是正确的吗?

错了。

^意味着你可以使用"typescript": "2.5""2.6""2.7"等npm…

如果你想了解^~的意思,请参阅:在package.json中,波浪号(~)和插入号(^)有什么区别?

此外,还必须确保包存在。可能没有"typescript": "2.5.9"查找包号。为了安全起见,如果你不想读它们的意思,只需删除~^

可以通过全局安装UNMET依赖项来解决。

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

依次安装。

编辑2020

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

< a href = " https://github。博客/ 2020 - 10 - 13 -呈现- v7 - 0 - 0 - - - npm cli / noreferrer“rel = > 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 < / p >
这个答案并不适用于所有情况,但如果你不能通过简单地键入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版本

例如,去释放pageenter image description here

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

packageB v4.0.0-beta.0


BREAKING CHANGE
package: requires packageA >= v4.0.0

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

enter image description here

此时,您有两个选择。

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

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

如果你选择option2:
如果pakageA从版本3升级到版本4是微不足道的,或者如果pakagb的维护者还没有测试pakageA的版本4,但说应该没有问题,你可以考虑留下这个错误

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

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

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

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

npm install -g npm@7

了解更多关于npm v7.0的信息,请访问Github Blog发布的这篇博文

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

在尝试修复依赖项上的安全漏洞问题时,也可能发生此问题。

以下是我所做的: 审计安装的依赖项

npm audit

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

npm audit fix

有些问题会有SEMVER警告,遵循链接将给我们提示如何进行手动检查和/或下一步该做什么。

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

npm upgrade
似乎npm audit fix没有考虑更新对等依赖关系,运行npm upgrade将修复未满足的对等依赖关系。 现在检查我们是否通过运行

来解决问题
npm list

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

我删除了package-lock.jsonnode_module,切换到YARN,这解决了问题

我收到以下错误: 警告“>react-native@0.68.2"是否存在未满足的同伴依赖“react@17.0.2" . < / p >

看起来主要的原因是我有“react-native”;安装在“npx react-native"这是随节点安装而来的。

一旦我删除了“react-native”包,我就可以成功地使用“npx react-native init packagename”;语法。

你可以在react native站点上查看关于上述问题的react-native文档: https://reactnative.dev/docs/environment-setup < / p >