2

我将 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 文档说

  1. 如果my-repo包含请求的包版本,则返回给客户端。
  2. 如果my-repo不包含请求的包版本,CodeArtifact 会在我的 repo 的上游存储库中查找它。
  3. 如果找到包版本,则将对它的引用复制到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是的,它正在工作
  • ...

任何帮助深表感谢。

4

1 回答 1

1

这是一个已知的问题。在发布修复之前,请从其他来源下载包并手动将其发布到您的 CodeArtifact 存储库。

编辑 18/08/2020

以名称“registry”开头的软件包有一个下载问题,现已解决,因此不再需要上述解决方法。

于 2020-07-26T06:35:07.677 回答