【问题标题】:How to resolve the transitive dependencies of different versions in npm?如何解决 npm 中不同版本的传递依赖?
【发布时间】:2021-11-14 06:06:43
【问题描述】:

我的应用程序依赖于 npm 包 ajv-keywords@apideck/better-ajv-errors,它们又依赖于包 ajv,但版本不同,如下面的错误所示。

npm ERR! peer dep missing: ajv@^6.9.1, required by ajv-keywords@3.5.2
npm ERR! peer dep missing: ajv@>=8, required by @apideck/better-ajv-errors@0.2.5

我尝试过的解决方案没有效果 -

下图显示了两个包的加载方式-

> npm ls @apideck/better-ajv-errors@0.2.5
`-- my-app@0.1.8
  `-- react-scripts@5.0.0-next.37
    `-- workbox-webpack-plugin@6.2.4
      `-- workbox-build@6.2.4
        `-- @apideck/better-ajv-errors@0.2.5

> npm ls ajv-keywords@3.5.2
+-- babel-loader@8.2.2
| `-- schema-utils@2.7.1
|   `-- ajv-keywords@3.5.2
+-- my-app@0.1.8
| `-- react-scripts@5.0.0-next.37
|   `-- react-dev-utils@12.0.0-next.37
|     `-- fork-ts-checker-webpack-plugin@6.0.5
|       `-- schema-utils@2.7.0
|         `-- ajv-keywords@3.5.2  deduped
`-- webpack@5.53.0
  `-- schema-utils@3.1.1
    `-- ajv-keywords@3.5.2  deduped

请提出一个合适的解决方案来满足这两个依赖项。

【问题讨论】:

  • 你试过在你的npm依赖文件中添加两个版本的ajv
  • npm 不允许我们在 package.json 中添加同一个包的两个版本

标签: npm node-modules


【解决方案1】:

这从来都不是一个有趣的情况,也不能说 npm 和 yarn 都曾经完全/干净地解决了这个问题。

通常,您会被困在等待您的依赖项取消固定或升级其版本...

也就是说,不确定您是否有特定要求使用旧版本的 ajv-keywords,但最新的ajv-keywords uses ajv v8

更新你的 package.json
"ajv-keywords": "^5.0.0"

然后重新运行 npm install 应该可以到达那里。

如有疑问,请务必查看他们的readme,以确认更新不会对您造成任何意外更改。

【讨论】:

    猜你喜欢
    • 2014-10-20
    • 2020-06-08
    • 2016-02-26
    • 2021-10-20
    • 2011-12-22
    • 2017-09-13
    • 2023-03-08
    • 1970-01-01
    • 2021-01-06
    相关资源
    最近更新 更多