繁体   English   中英

使用纱线从 GCP 工件注册表安装 npm 包时如何修复 404 错误?

[英]How to fix 404 error when installing npm package from GCP artifact registry with yarn?

我在从 GCP 安装 NPM 包时遇到问题。

通过执行以下步骤,我能够将包上传到 GCP 的工件注册表:

  1. 登录到我的谷歌帐户( gcloud auth application-default login

  2. gcloud artifacts print-settings npm \ --project=[my-project]\ --repository=[my-repo] \ --location=us-east1 \ --scope=@[my-scope]

  3. 将上一步的输出粘贴到位于项目根目录的.npmrc文件中。

  4. 刷新 GCP 的访问令牌 ( npx google-artifactregistry-auth ./.npmrc )

  5. 运行yarn publish

我的.npmrc文件如下所示:

@[my-scope]:registry=https://us-east1-npm.pkg.dev/[my-project]/[my-repo]/
//us-east1-npm.pkg.dev/[my-project]/[my-repo]/:_authToken="[auth-token]"
//us-east1-npm.pkg.dev/[my-project]/[my-repo]/:always-auth=true

但是,当我尝试通过以下方式在另一个项目上安装包时:

  1. 执行上述步骤 1-4
  2. 运行yarn add @[my-scope]/[my-package]

我收到 404 错误。 看起来 yarn 正在默认注册表中寻找包:

error An unexpected error occurred: "https://registry.yarnpkg.com/@[my-scope]/@[my-pacakge]/-/@[my-scope]/[my-package]-0.0.1.tgz: Request failed \"404 Not Found\"".

我只是按照 GCP 安装说明中提到的步骤进行操作,但不知何故它不起作用。

我在这篇文章中遇到了类似的问题: Can't install a scoped package I publish to an npm registry in GCP但这不是我得到的确切错误。

我将不胜感激有关此问题的任何帮助。

提前致谢!

我刚遇到这个问题几天,解决方法很简单,发布时不要使用 YARN 而已。

我不知道 yarn 的哪一部分导致了这种情况,但基本上它忽略了 .npmrc 导致 tarball 指向错误的存储库,如果你运行yarn info可以检查它。 因此,当发布到 GCP 工件注册表时,应该使用npm publish代替。

为 npm 设置身份验证管理 Node.js 包中,获取访问令牌部分使用的命令是

npx google-artifactregistry-auth

在同一部分中,有一条注释说明了如果您需要更改.npmrc文件的路径,如何添加标志。

注意:如果您需要将存储库设置和凭据存储在 .npmrc 文件中而不是默认值,您可以运行带有附加标志的凭据帮助程序。

--repo-config是包含存储库设置的 .npmrc 文件。 如果您不指定此标志,则默认位置是当前目录。

--credential-config是要写入访问令牌的 .npmrc 文件的路径。 默认值为您的用户 .npmrc 文件。

代替:

 npx google-artifactregistry-auth ./.npmrc

它可以写成

npx google-artifactregistry-auth --repo-config=pathto/.npmrc --credential-config=pathto/.npmrc 

如果你不确定你的文件在哪里,你可以运行npm config ls -l | grep config npm config ls -l | grep config如此所述

还要检查您是否指定了正确的.npmrc路径,如果它与配置 npm中所示的默认注册表不同,并确认您正在尝试从 Node.js 包存储库安装具有正确范围、包、标记或版本的包完全明确。

暂无
暂无

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

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