缺少 AWS CodeArtifact 公共 npm 包版本

Posted

技术标签:

【中文标题】缺少 AWS CodeArtifact 公共 npm 包版本【英文标题】:AWS CodeArtifact public npm package version missing 【发布时间】: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-tokenregistry-url 是仅缓存最新版本,任何安装其他版本的尝试都以

结尾
error notarget No matching version found for registry-auth-token@^3.0.1.

为什么 CodeArtifact 无法解析特定的包版本而可以解析其他版本? 是 CodeArtifact 的问题还是我在做什么?错了吗?

我已经尝试了所有已知的(对我而言)方法来解决此类问题:

npm ci 已删除 package-lock.jsonnode_modules + npm i npm cache clean -f npm -d ping是的,它正在工作) ...

非常感谢任何帮助。

【问题讨论】:

【参考方案1】:

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

2020 年 8 月 18 日编辑

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

【讨论】:

谢谢莎里克!我最初尝试将此作为问题进行搜索,但似乎没有找到相关信息或类似报告的运气,如果存在,请您发布链接。我想跟踪它。 这应该被修复。您现在可以重试并反馈。谢谢 将检查这些天并报告。谢谢! 我仍然遇到这个问题,必须手动添加这些软件包才能安装它。奇怪的是,只有这两个软件包都以“registry”开头。 最后我测试了所有提到的包的安装(每个单独的并且作为deps +特定版本安装)。它现在都为我工作。感谢您及时了解@shariqmaws。

以上是关于缺少 AWS CodeArtifact 公共 npm 包版本的主要内容,如果未能解决你的问题,请参考以下文章

AWS Codeartifact 未指向私有存储库

如何在云上创建自己的 Artifactory,例如 AWS 的 Codeartifact、Jfrog 的 Artifactory

AWS CodeArtifact:mvn deploy:deploy-file 无法部署工件:无法传输工件 401 Unauthorized

AWS EB Deploy 在部署后显示缺少 Dockerrun.aws.json

配置错误:Config 中缺少区域 (AWS)

Laravel Passport:部署到 aws 后缺少密钥