【发布时间】:2020-11-03 19:54:54
【问题描述】:
我将 AWS CodeArtifact 用于私有 npm 注册表。项目有大量的依赖关系,所有这些都得到了正确的解决。我们正在成功地将包发布到我们的注册表,并将它们用作其他项目的依赖项,在决定引入 semantic-release 之前,一切都按预期工作,发生了什么:
$ npm i semantic-release
npm ERR! code ETARGET
npm ERR! notarget No matching version found for registry-auth-token@^3.0.1.
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
npm ERR! notarget
npm ERR! notarget It was specified as a dependency of 'package-json'
npm ERR! notarget
这仅在使用私有注册表时发生。如果我们检查 CodeArtifact 中的上游和下游存储库 - 此软件包只有一个版本可用/缓存(最新),而公共 npm 持有 registry-auth-token@^3.0.1 并且可以使用公共安装此版本npmjs 注册表。
AWS docs says
- 如果
my-repo包含请求的包版本,则返回给客户端。- 如果
my-repo不包含请求的包版本,CodeArtifact 会在我的存储库的上游存储库中查找它。- 如果找到包版本,则将对其的引用复制到
my-repo,并将包版本返回给客户端。
根据这些点,如果公共 npm 中存在版本,它将被拉到下游并缓存,它确实可以与其他随机包一起使用,我尝试安装丢失/旧/未使用的版本,但 registry-auth-token 和 registry-url 是仅缓存最新版本,任何安装其他版本的尝试都以
error notarget No matching version found for registry-auth-token@^3.0.1.
为什么 CodeArtifact 无法解析特定的包版本而可以解析其他版本? 是 CodeArtifact 的问题还是我在做什么?错了吗?
我已经尝试了所有已知的(对我而言)方法来解决此类问题:
npm ci- 已删除
package-lock.json、node_modules+npm i npm cache clean -f-
npm -d ping(是的,它正在工作) - ...
非常感谢任何帮助。
【问题讨论】:
标签: node.js amazon-web-services npm semantic-release aws-codeartifact