繁体   English   中英

无法安装我发布到 GCP 中的 npm 注册表的范围包

[英]Can't install a scoped package I published to a npm registry in GCP

我将几个 npm 包发布到托管在 GCP 中的私有 npm 注册表,我可以在注册表中看到所有版本。 但是我无法下载该软件包,因为安装命令会抛出 E404。

NPM 在尝试下载页面时抛出一个通用的 404 错误:

npm ERR! code E404
npm ERR! 404 Not Found - GET https://europe-north1-npm.pkg.dev/[Project]/@[scope]/[packagename]/-/@[scope]/[packagename]-0.1.0.tgz
npm ERR! 404 
npm ERR! 404  '@[scope]/[packagename]@https://europe-north1-npm.pkg.dev/[Project]/@[scope]/[packagename]/-/@[scope]/[packagename]-0.1.0.tgz' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

打开要解析的 url 会返回此错误:

{"error":"Permission \"artifactregistry.repositories.downloadArtifacts\" denied on resource \"projects/[Project]/locations/europe-north1/repositories/@[scope]\" (or it may not exist)"}
{"error":"Unmatched scope name: \"\" != \"@[scope]\""}

另外,我查了一下,我的账户确实有downloadArtifacts的作用。 我不明白为什么它无法解析 URL,因为使用相同的配置我可以发布甚至运行npm view包。 我已经尝试创建全新的包、指定版本、重置身份验证令牌,但由于某种原因我仍然无法下载包。

如果有帮助,我的 current.npmrc 文件如下所示:

registry:https://registry.npmjs.org/=true
@[scope]:registry=https://europe-north1-npm.pkg.dev/[project]/[repo name]/
//europe-north1-npm.pkg.dev/[project]/[repo name]/:_authToken=[gcp auth token]
//europe-north1-npm.pkg.dev/[project]/[repo name]/:always-auth=true
//registry.npmjs.org/:_authToken=[npm auth token]

原来这不是 GCP 特定问题,而是发布到 GCP 时的 Yarn Berry 问题。 正在生成的 tarballURL 使用截断的注册表 URL,这就是我在尝试安装软件包时收到 404 的原因。 此处提出了对此的修复。 https://github.com/yarnpkg/berry/pull/3513

我有一个类似于这个的错误。

我完成了整个存储库创建过程并创建了一个新项目来测试包。

当我尝试npm install my-package时,出现了 404 错误。

经过一些测试后,我发现我在将使用该包的项目中也需要.npmrc文件。 对某些人来说这似乎是显而易见的,但我不知道。

将返回的配置设置添加到 Node.js 项目中的 .npmrc 配置文件。 此文件通常与 package.json 位于同一目录中。

确保将这些设置包含在您发布的包的 Node.js 项目中,以及将从您的 npm 存储库安装依赖项的项目。

为 npm 设置身份验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM