如何修复404错误时从gpp工件注册表安装npm包?



我在从 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 中的安装说明中提到的步骤进行操作,但不知何故它不起作用。

我在这篇文章中遇到了类似的问题:无法安装我发布到 GCP 中的 npm 注册表的作用域包,但这不是我得到的确切错误。

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

提前感谢!

我刚刚遇到了这个问题几天,解决方案很简单,发布时不要使用 YARN。就是这样。

我不知道纱线的哪一部分导致这种情况,但基本上它忽略了 .npmrc,导致压缩包指向错误的存储库,如果您运行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

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

相关内容

  • 没有找到相关文章

最新更新