NPM - 解决 Package.json 中的对等依赖关系

NPM - Resolving Peer Dependencies in Package.json

我想知道我是否在 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" 引起的,它已移至 ngx-charts。 "angular2-google-maps" 对 zone.js@0.8.9 也有未满足的对等依赖。仍然令人费解的是,在删除 "ng2d3" 和 "angular2-google-maps"

后,我收到以下未满足的对等依赖关系
├── 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",
  }

根据 ngx-charts-dag 回购协议:

Note: ngx-charts-dag 2.0.0 works only with Angular 4.x. To use ngx-charts-dag with Angular 2.x, use ngx-charts-dag 1.x.

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