在运行npm install时,我们得到以下信息:
npm WARN ajv-keywords@2.1.1 requires a peer of ajv@^5.0.0 but none is installed. You must install peer dependencies yoursel
我们最初的想法是,问题是需要安装提到的对等依赖项(ajv),但这并不能解决问题。
重要的是简单地理解问题。假设我们确实满足AFAICT的依赖性,那么错误消息甚至意味着什么?
package.json具有以下内容:
"dependencies": {
"ajv": "^6.0.0"
},
package-lock.json具有以下内容:
"ajv": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.1.tgz",
"integrity": "sha1-KKarxJOiq+D7TIUHrK7bQ/pVBnE=",
"requires": {
"fast-deep-equal": "1.1.0",
"fast-json-stable-stringify": "2.0.0",
"json-schema-traverse": "0.3.1"
}
},
"ajv-keywords": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
"integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
"dev": true
}
npm-install-peers给This package doesn't seem to have any peerDependencies。该工具的维护者说:“它旨在安装项目的直接对等依赖关系,而不是对依赖关系的对等依赖关系进行安装”,这意味着该问题是一个比顶层更深的依赖关系。
是否有安装依赖项依赖项的工具?
安装所请求的特定版本的AJV:
npm install ajv@^5.0.0 --save
Run Code Online (Sandbox Code Playgroud)
(^确保仅为软件包安装次要的,向后兼容的更新,例如5.1.0)
我正在使用 firebase-admin,当我更新到 firebase-admin 版本 7.0.0 时,也出现了这个问题。
我已明确指定这两个组件的最新版本,并且警告消失了:
"ajv": "^6.10.0",
"ajv-keywords": "^3.4.0"
Run Code Online (Sandbox Code Playgroud)
查看https://github.com/angular/angular-cli/issues/9691有建议这是最新版本的 npm 的问题。删除 package-lock.json 为我纠正了这个错误。