0

我正在使用解决方案来解决来自嵌套依赖项 (@dep/xyz) 的漏洞。嵌套依赖使用的是存在漏洞的 axios 0.21.1。我应该升级到它上面的任何兼容版本。

当我将它添加到如下分辨率时,我没有在 yarn.lock 文件中看到嵌套依赖项的更新。请指教。

下面是我的 package.json 文件

包.json

{
 "name" : "xyz",
 dependencies: {
     "@dep/xyz" : "2.3.4",
     "axios": "^0.21.2"
 },
 "resolutions": {
    "**/**/axios": "^0.21.2"
  }
}

yarn.lock 在上面的 yarn install 之后创建

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1

axios@^0.21.1, axios@^0.21.2:
  version "0.21.4"
  resolved "https:..."
  integrity sha1-123...=
  dependencies:
    follow-redirects "^1.14.0"

"@dep/xyz@2.3.4":
  version "2.3.4"
  resolved "https:..."
  integrity sha1-123...=
  dependencies:
    "@x/d1" "0.2.2"
    "@y/d2" "0.9.2"
    axios "^0.21.1"

4

2 回答 2

0

对于初学者,您不需要进行任何分辨率固定。@dep/xyz@2.3.4 正在使用“^0.21.1”的 semver 规范引入 axios。在这种情况下,它将接受 >=0.21.1 和 <0.22.0 的任何版本。你只需要使用 yarn 来更新正在解析的 axios 的版本。当您不需要时,我会建议您反对固定分辨率,因为这可能会导致长期不兼容。如果将来 axios 的版本 >=0.22.0 是您或您的依赖项尝试使用的,您的分辨率设置将强制将它们降低到 >=0.21.2 && <0.22.0 的范围内。

更直接地回答你的问题 - 我没有看到任何看起来有问题的地方。锁定文件完全符合我的预期。您对“axios@^0.21.2”的分辨率受到尊重,因为它引入了 0.21.4,它遵守了这一点(尽管就像我说的那样,实现这一点不需要分辨率)。您还没有完成与@dep/xyz 相关的任何类型的分辨率固定(您也不应该),所以那里没有任何改变。

于 2021-11-09T21:08:25.230 回答
0

您可能需要升级纱线。resolutions不适/用于名称中包含低于 2 的纱线版本的依赖项。请参阅https://github.com/yarnpkg/yarn/issues/4874

于 2022-03-02T00:11:35.147 回答