例如,当我安装 Angular2 时:
npm install --save angular2
temp@1.0.0 /Users/doug/Projects/dougludlow/temp
├── angular2@2.0.0-beta.3
├── UNMET PEER DEPENDENCY es6-promise@^3.0.2
├── UNMET PEER DEPENDENCY es6-shim@^0.33.3
├── UNMET PEER DEPENDENCY reflect-metadata@0.1.2
├── UNMET PEER DEPENDENCY rxjs@5.0.0-beta.0
└── UNMET PEER DEPENDENCY zone.js@0.5.11
npm WARN angular2@2.0.0-beta.3 requires a peer of es6-promise@^3.0.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of rxjs@5.0.0-beta.0 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of zone.js@0.5.11 but none was installed.
是否有一个魔术标志可以传递给 npm 来安装对等依赖项?我一直找不到...手动复制和粘贴对等依赖项并确保我有正确的版本很乏味。
换句话说,我宁愿不必这样做:
npm install --save angular2@2.0.0-beta.3 es6-promise@^3.0.2 es6-shim@^0.33.3 reflect-metadata@0.1.2 rxjs@5.0.0-beta.0 zone.js@0.5.11
更好的方法是什么?
angular2@2.0.0-beta.3
需要 es6-promise@^3.0.2
)。但是,我想知道是否有自动安装对等依赖项的命令/标志。
npm -v
=> 3.5.3
npm install [PACKAGE]
对我有用。显然,这不会解决 OP 的问题,但我花了很多时间研究这个问题,所以如果这对某人有帮助......
使用 npm 3 显式删除了对等依赖项的自动安装,因为它导致的问题比它试图解决的要多。你可以在这里阅读它,例如:
https://blog.npmjs.org/post/110924823920/npm-weekly-5
https://github.com/npm/npm/releases/tag/v3.0.0
所以不,由于给出的原因,您不能使用 npm 3 向上自动安装它们。
NPM V7
NPM v7 重新引入了自动 peerDependencies 安装。他们进行了一些更改以解决旧问题,因为多个依赖项之间的版本兼容性。您可以看到讨论 here 和公告 here
现在在 V7 中,与 V3 之前的版本一样,您只需要执行 npm i
并且所有 peerDependences 应该会自动安装。
我通过使用警告的确切值重写 package.json
来解决它。
运行 npm
时的警告:
npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2
在 package.json
中,写
"es6-shim": "^0.33.3",
"reflect-metadata": "0.1.2",
然后,删除 node_modules
目录。
最后,运行以下命令:
npm install
npm cache clean
、npm install
可能比擦除 node_modules 更好?我总是避免删除 node_modules,我喜欢找出问题所在,而不是删除目录。
npm install --cache /tmp/empty-cache
来使用临时缓存,而不是核对实际缓存。 npm 错误! npm 错误!如果您确定要删除整个缓存,请使用 --force 重新运行此命令。
package.json
的哪个部分?在哪个package.json
?包中的那个还是应用程序中的那个?
作弊码在这种情况下和其他一些情况下很有帮助......
├── UNMET PEER DEPENDENCY @angular/common@4.0.2
├── UNMET PEER DEPENDENCY @angular/compiler@4.0.2
├── UNMET PEER DEPENDENCY @angular/compiler-cli@4.0.2
├── UNMET PEER DEPENDENCY @angular/core@4.0.2
├── UNMET PEER DEPENDENCY @angular/forms@4.0.2
├── UNMET PEER DEPENDENCY @angular/http@4.0.2
├── UNMET PEER DEPENDENCY @angular/platform-browser@4.0.2
├── UNMET PEER DEPENDENCY @angular/platform-browser-dynamic@4.0.2 >
将您的错误复制并粘贴到您的代码编辑器中。用光标突出显示不需要的部分。在这种情况下 ├── UNMET PEER DEPENDENCY 按命令 + da 一堆时间。按两次删除。 (如果您不小心突出显示了,请按空格 ├── UNMET PEER DEPENDENCY )按一次。添加 npm install 按下一次。添加 --save 将你的东西复制回 cli 并运行
npm install @angular/common@4.0.2 @angular/compiler@4.0.2 @angular/compiler-cli@4.0.2 @angular/core@4.0.2 @angular/forms@4.0.2 @angular/http@4.0.2 @angular/platform-browser@4.0.2 @angular/platform-browser-dynamic@4.0.2 --save
--save
:stackoverflow.com/a/19578808/12484
我在开发具有 peerDependencies
的 npm 包时遇到了这些错误。我必须确保任何 peerDependencies
也被列为 devDependencies
。该项目不会自动使用全局安装的包。
项目 npm-install-peers
将检测对等点并安装它们。
从 v1.0.1
开始,它不支持自动回写到 package.json
,这基本上可以解决我们这里的需求。
请在飞行中添加您对问题的支持:https://github.com/spatie/npm-install-peers/issues/4
This package doesn't seem to have any peerDependencies
npm-install-peers
将安装在 package.json
中注册的 peerDependencies
。它不会安装 peerDependencies
的依赖项,例如 angular2
。
npm-install-peers
仅用于安装项目的 package.json 中列出的 "peerDependencies"
。您正在尝试安装每个 node_modules/<package>/package.json
文件中列出的 "peerDependencies"
,而不是您的直接对等依赖项。
我遇到了同样的问题,幸运的是我找到了一种替代方法来安装对等依赖项以及 install 命令。
第 1 步:$ npm i npm-install-peers -D
为了更清楚地了解插件:https://www.npmjs.com/package/npm-install-peers
第 2 步:为魔法脚本更新 package.json
....
"scripts": {
...
"postinstall": "npm-install-peers"
},
....
第 3 步:只需点击 install 命令即可安装所有插件
$ npm install
可能有点过时,但您可以运行 npx install-peerdeps --yarn --dev PACKAGE_NAME
。如果您想使用 yarn,请传递 --yarn
标志;如果您希望将包及其对等部门添加为开发依赖项,请传递 --dev
标志。希望这可以帮助
安装纱线,然后运行:
yarn global add install-peerdeps
install-peerdeps
包会出错。
执行:npm install-test