【问题标题】:NPM - Resolving Peer Dependencies in Package.jsonNPM - 解决 Package.json 中的对等依赖关系
【发布时间】:2017-09-25 21:41:05
【问题描述】:

我想知道我是否在我的 package.json 中正确解决了未满足的对等依赖项。如果我遇到错误UNMET PEER DEPENDENCY {package@version},我应该将依赖项安装到“dependencies”或“devDependencies”还是依赖?

我试过了

npm install --save {package}

npm install --save-dev {package}

请注意,每次安装后我都会运行以下命令 -

rm -rf ~/.npm
rm -rf node_modules
npm cache clean
npm install  

我的具体问题是,在运行npm install 之后,我在项目根目录下有以下未满足的对等依赖项。只有@angular core & common 在另一个包下 -

path/to/app
├── UNMET PEER DEPENDENCY @angular/animations@4.1.0
├── UNMET PEER DEPENDENCY @angular/common@4.1.0 invalid
├── UNMET PEER DEPENDENCY @angular/compiler@4.1.0
├── UNMET PEER DEPENDENCY @angular/core@4.1.0 invalid
├── UNMET PEER DEPENDENCY @angular/platform-browser@4.1.0
├── UNMET PEER DEPENDENCY @angular/platform-browser-dynamic@4.0.3
├─┬ @swimlane/ngx-charts-dag@1.0.0
│ ├── UNMET PEER DEPENDENCY @angular/common@~2.4.5
│ ├── UNMET PEER DEPENDENCY @angular/core@~2.4.5
├─┬ UNMET PEER DEPENDENCY d3@4.8.0
├── UNMET PEER DEPENDENCY node-sass@^4.0.0
├─┬ UNMET PEER DEPENDENCY rxjs@5.3.0
└── UNMET PEER DEPENDENCY zone.js@0.8.9

但是,即使在使用以下两个命令之一进行安装,然后删除 node_modules 并清理缓存后,我仍然有未满足的依赖项。

npm install --save-dev @angular/animations @angular/common @angular/compiler @angular/core @angular/platform-browser @angular/common @angular/core d3 less rxjs zone.js

npm install --save @angular/animations @angular/common @angular/compiler @angular/core @angular/platform-browser @angular/common @angular/core d3 less rxjs zone.js

所以最重要的是,我安装 UNMET 依赖项的方法是否正确?如果有人知道我的问题的解决方法,我将不胜感激。

编辑: 使用 npm 版本 4.2.0,这是我对正确 ngx-charts-dag 版本的依赖项-

  "dependencies": {
    "@angular/animations": "~4.0.3",
    "@angular/common": "~4.0.3",
    "@angular/compiler": "~4.0.3",
    "@angular/core": "~4.0.3",
    "@angular/platform-browser": "~4.0.3",
    "@angular/platform-browser-dynamic": "~4.0.3",
    "d3": "4.8.0",
    "@swimlane/ngx-charts-dag": "^2.0.0",
    "rxjs": "5.3.0",
    "zone.js": “0.8.9”,
    …
  }

我仍然在 package.json 中的项目根目录下看到未满足的对等依赖问题 -

├── UNMET PEER DEPENDENCY @angular/common@4.0.3
├── UNMET PEER DEPENDENCY @angular/compiler@4.0.3
├── UNMET PEER DEPENDENCY @angular/core@4.0.3
├── UNMET PEER DEPENDENCY @angular/platform-browser@4.0.3
├── UNMET PEER DEPENDENCY @angular/platform-browser-dynamic@4.0.3
├─┬ UNMET PEER DEPENDENCY d3@4.8.0
├─┬ UNMET PEER DEPENDENCY rxjs@5.3.0
└── UNMET PEER DEPENDENCY zone.js@0.8.9

编辑2: Mitch 提供的一些修复删除了 rxjs@5.3.0 和 zone.js@0.8.9 的未满足的对等依赖项。这些是由已弃用的“ng2d3”引起的,该“ng2d3”已移至 ngx-charts。 “angular2-google-maps”还对 zone.js@0.8.9 具有未满足的对等依赖项。仍然令人费解的是,在删除“ng2d3”和“angular2-google-maps”后,我收到了以下 UNMET PEER DEPENDENCIES

├── UNMET PEER DEPENDENCY @angular/animations@4.0.3
├── UNMET PEER DEPENDENCY @angular/common@4.0.3
├── UNMET PEER DEPENDENCY @angular/compiler@4.0.3
├─┬ UNMET PEER DEPENDENCY @angular/compiler-cli@4.1.0
├── UNMET PEER DEPENDENCY @angular/core@4.0.3
├── UNMET PEER DEPENDENCY @angular/platform-browser@4.0.3
├── UNMET PEER DEPENDENCY @angular/platform-browser-dynamic@4.0.3
├─┬ UNMET PEER DEPENDENCY d3@4.2.2
├─┬ UNMET PEER DEPENDENCY webpack@2.5.0

这些与我的 package.json 中指定的确切版本匹配 -

  "dependencies": {
    "@angular/animations": "4.0.3",
    "@angular/common": "4.0.3",
    "@angular/compiler": "4.0.3",
    "@angular/compiler-cli": "4.1.0",
    "@angular/core": "4.0.3",
    "@angular/platform-browser": "4.0.3",
    "@angular/platform-browser-dynamic": "4.0.3",
    "d3": "4.2.2"
  },
  "devDependencies": {
    "webpack": "2.5.0",
  }

【问题讨论】:

  • 您的 package.json 中是否指定了 npm 的版本?你目前正在运行什么版本的 npm?
  • 我没有在 package.json 中指定我的 npm 版本。我正在使用 4.2.0
  • Angular 在依赖方面有点棘手。您可以删除 node_modules 并更新您的 package.json 以包含警告中提到的 exact 版本吗?例如"@angular/animations": "4.1.0"
  • 不幸的是同样的问题。我的方法看起来正确吗?
  • "@angular/core"common 可能不在您的 devDependencies 中——这是构建工具、开发工具、测试框架等的地方。什么包引发了“UNMET PEER”问题?

标签: node.js angular npm dependencies package.json


【解决方案1】:

根据ngx-charts-dag 回购:

注意:ngx-charts-dag 2.0.0 仅适用于 Angular 4.x。要将 ngx-charts-dag 与 Angular 2.x 一起使用,请使用 ngx-charts-dag 1.x。

您正在尝试使用不兼容的 ngx-charts-dag@1.0.0 和 angular@4.x。要么将所有 Angular 降级到 2.x,要么将 ngx-charts-dag 升级到 2.x。

【讨论】:

  • 谢谢!更改 dag 版本和 @angular 版本有助于删除这些对等依赖项。我仍然在根目录下收到未满足的对等依赖错误,即使这些错误与我的 package.json 中的确切版本有关。知道为什么会这样吗?
  • 有几件事可能导致:1. 一个脏的 node_modules 文件夹,2. 另一个抛出相同对等依赖错误的包,3. angular 模块中的其他不兼容性。明确一点:Angular 希望 all 的依赖项是相同的;你的 package.json 中不能有 @angular/animations@2.0.1@angular/core@4.0.1 anywhere。它们都必须设置为相同的版本。
  • 我编辑了我的 package.json 以删除 devDependencies 中的所有重复包(“@angular/common”等)& rm -rf node_modules; npm 缓存清理。如果数字 2 仍然可能是原因,您知道除了查看 npm install 的输出之外,是否还有其他方法可以判断另一个包是否存在这些对等依赖错误?
  • 我假设您也尝试过rm -rf ~/.npm && npm cache clean——这是处理我认为您提到的错误的正确方法。您可以在运行 npm install 时检查 peerDeps,使用 npm info @swimlane/ngx-charts-dag peerDependencies(例如),或者使用像 install-peerdeps 这样的包来尝试为您处理这一切。
  • 感谢您的帮助。我查看了 package.json 中的 peerDependencies,没有看到任何会导致我遇到的未满足的对等依赖项错误的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 2018-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
相关资源
最近更新 更多