如何修复 npm UNMET PEER DEPENDENCY 警告?
How do I fix the npm UNMET PEER DEPENDENCY warning?
我在 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?
npm 不再安装对等依赖项,因此您需要手动安装它们,只需对所需的依赖项执行 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
今天可用 Angular 2 rc.7,我遇到了类似的问题 rxjs@5.0.0-beta.12
未满足的对等依赖性。
如果您像我一样,只是将 @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 中定义了旧版本。要解决此问题,请更改 package.json 中的版本以匹配 npm 抱怨的版本。
完成后,运行 npm install 瞧!!
好的,所以我挣扎了很长时间试图弄清楚这个问题。这是 nuclear 选项,当你用尽所有其他方法时..
- 在您的电脑上创建一个新文件夹。
- 下载 angular 的全新安装 - 我使用了这个指南:https://coursetro.com/posts/code/55/How-to-Install-an-Angular-4-App
- 运行它,确保它有效
- 然后从你的package.json文件
一一安装你的依赖项
- 运行每一个安装完后
当您完成并且它仍然有效时,将您的实际代码导入到这个新项目中。修复更新版本的 angular 导致的任何编译错误。
这就是为我做的。1 小时的返工与 6 小时的尝试找出 wtf 是错误的..希望我以这种方式开始..
在我的例子中,所有依赖项都已经存在。请在这种情况下更新 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".
所以我的打字稿需要在 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"
查包号。为了真正安全,如果您不想阅读它们的意思,请删除 ~
或 ^
。
可以通过全局安装UNMET依赖来解决。
示例:npm install -g @angular/common@4.4.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.
这意味着您安装了 4.2.0 版本的 packageA,但是 packageB@3.3.0 需要 3.x.x 版本的 pakageA。 (explanation of ^)
所以你可以通过将 packageA 降级到 3.x.x 来解决这个错误,但通常你不想降级包。
好消息是,在某些情况下,packageB 只是跟不上 packageA,而 packageB 的维护者正在努力将 packageA 的对等依赖性提高到 4.x.x.
那样的话,你可以在npm或者github.
中查看是否有更高版本的packageB需要4.2.0版本的packageA
例如,转到发布页面
通常你会发现像这样的依赖性的重大变化。
packageB v4.0.0-beta.0
BREAKING CHANGE
package: requires packageA >= v4.0.0
如果在发布页面上没有找到任何内容,请转到问题页面并按 peer
等关键字搜索问题。您可能会找到有用的信息。
此时,您有两个选择。
- 升级到你想要的版本
- 暂时留下错误,等稳定版发布。
如果选择选项1:
在很多情况下,版本没有 latest
tag 因此不稳定。因此,您必须检查此更新中发生了什么变化,并确保任何内容都不会中断。
如果选择选项2:
如果 pakageA 从版本 3 升级到版本 4 是微不足道的,或者如果 pakageB 的维护者还没有测试 pakageA 的版本 4 但说应该没问题,你可以考虑留下错误。
在这两种情况下,最好彻底测试它是否不会破坏任何东西。
最后,如果你想知道为什么你必须手动做这样的事情,this link explains well.
如果您使用的是 npm v6 或更早版本,您将收到此警告。在 npm v7.0 之后,npm 开发团队表示他们将自动安装对等依赖项,全部一起。因此,现在您不想手动安装对等依赖项。
您可以使用此命令安装 npm v7.0,
npm install -g npm@7
从 this blog post 了解更多关于 npm v7.0 的信息,该文章由 Github 博客发布。
如果您希望保留 angular 的当前版本,您可以访问此 version compatibility checker to check which version of angular-material is best for your current angular version. You can also check peer dependencies of angular-material using angular-material compatibility。
尝试修复依赖项的安全漏洞问题时也会出现此问题。
这是我所做的:
审核安装的依赖项
npm audit
如果有可用的修复程序,运行以下大多数情况下可以解决问题:
npm audit fix
有些问题会 SEMVER WARNING,在 link 之后会提示我们如何进行人工审核 and/or 接下来要做什么。
做更多的研究让我发现了这个命令:
npm upgrade
似乎 npm audit fix
没有考虑更新对等依赖关系,运行 npm upgrade
会修复未满足的对等依赖关系。
现在检查我们是否通过 运行:
解决了问题
npm list
这将为我们提供项目的所有依赖项,并警告我们任何未满足的对等 deps 错误。在大多数情况下,升级实际上比继续使用旧版本的软件包要好,如果您没有安全漏洞问题 npm install
也是一个可行的选择。
我在 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?
npm 不再安装对等依赖项,因此您需要手动安装它们,只需对所需的依赖项执行 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
今天可用 Angular 2 rc.7,我遇到了类似的问题 rxjs@5.0.0-beta.12
未满足的对等依赖性。
如果您像我一样,只是将 @angular/...rc.6
替换为 @angular/...rc.7
- 这还不够。因为,例如,@angular/router
没有 rc.6
版本。
在这种情况下,最好查看快速入门
中的package.jsonUNMET 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 中定义了旧版本。要解决此问题,请更改 package.json 中的版本以匹配 npm 抱怨的版本。
完成后,运行 npm install 瞧!!
好的,所以我挣扎了很长时间试图弄清楚这个问题。这是 nuclear 选项,当你用尽所有其他方法时..
- 在您的电脑上创建一个新文件夹。
- 下载 angular 的全新安装 - 我使用了这个指南:https://coursetro.com/posts/code/55/How-to-Install-an-Angular-4-App
- 运行它,确保它有效
- 然后从你的package.json文件 一一安装你的依赖项
- 运行每一个安装完后
当您完成并且它仍然有效时,将您的实际代码导入到这个新项目中。修复更新版本的 angular 导致的任何编译错误。
这就是为我做的。1 小时的返工与 6 小时的尝试找出 wtf 是错误的..希望我以这种方式开始..
在我的例子中,所有依赖项都已经存在。请在这种情况下更新 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".
所以我的打字稿需要在 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"
查包号。为了真正安全,如果您不想阅读它们的意思,请删除 ~
或 ^
。
可以通过全局安装UNMET依赖来解决。
示例:npm install -g @angular/common@4.4.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.
这意味着您安装了 4.2.0 版本的 packageA,但是 packageB@3.3.0 需要 3.x.x 版本的 pakageA。 (explanation of ^)
所以你可以通过将 packageA 降级到 3.x.x 来解决这个错误,但通常你不想降级包。
好消息是,在某些情况下,packageB 只是跟不上 packageA,而 packageB 的维护者正在努力将 packageA 的对等依赖性提高到 4.x.x.
那样的话,你可以在npm或者github.
例如,转到发布页面
通常你会发现像这样的依赖性的重大变化。
packageB v4.0.0-beta.0
BREAKING CHANGE
package: requires packageA >= v4.0.0
如果在发布页面上没有找到任何内容,请转到问题页面并按 peer
等关键字搜索问题。您可能会找到有用的信息。
此时,您有两个选择。
- 升级到你想要的版本
- 暂时留下错误,等稳定版发布。
如果选择选项1:
在很多情况下,版本没有 latest
tag 因此不稳定。因此,您必须检查此更新中发生了什么变化,并确保任何内容都不会中断。
如果选择选项2:
如果 pakageA 从版本 3 升级到版本 4 是微不足道的,或者如果 pakageB 的维护者还没有测试 pakageA 的版本 4 但说应该没问题,你可以考虑留下错误。
在这两种情况下,最好彻底测试它是否不会破坏任何东西。
最后,如果你想知道为什么你必须手动做这样的事情,this link explains well.
如果您使用的是 npm v6 或更早版本,您将收到此警告。在 npm v7.0 之后,npm 开发团队表示他们将自动安装对等依赖项,全部一起。因此,现在您不想手动安装对等依赖项。
您可以使用此命令安装 npm v7.0,
npm install -g npm@7
从 this blog post 了解更多关于 npm v7.0 的信息,该文章由 Github 博客发布。
如果您希望保留 angular 的当前版本,您可以访问此 version compatibility checker to check which version of angular-material is best for your current angular version. You can also check peer dependencies of angular-material using angular-material compatibility。
尝试修复依赖项的安全漏洞问题时也会出现此问题。
这是我所做的: 审核安装的依赖项
npm audit
如果有可用的修复程序,运行以下大多数情况下可以解决问题:
npm audit fix
有些问题会 SEMVER WARNING,在 link 之后会提示我们如何进行人工审核 and/or 接下来要做什么。
做更多的研究让我发现了这个命令:
npm upgrade
似乎 npm audit fix
没有考虑更新对等依赖关系,运行 npm upgrade
会修复未满足的对等依赖关系。
现在检查我们是否通过 运行:
npm list
这将为我们提供项目的所有依赖项,并警告我们任何未满足的对等 deps 错误。在大多数情况下,升级实际上比继续使用旧版本的软件包要好,如果您没有安全漏洞问题 npm install
也是一个可行的选择。