[英]How to fix 404 error when installing npm package from GCP artifact registry with yarn?
我在从 GCP 安装 NPM 包时遇到问题。
通过执行以下步骤,我能够将包上传到 GCP 的工件注册表:
登录到我的谷歌帐户( gcloud auth application-default login
)
跑
gcloud artifacts print-settings npm \ --project=[my-project]\ --repository=[my-repo] \ --location=us-east1 \ --scope=@[my-scope]
将上一步的输出粘贴到位于项目根目录的.npmrc
文件中。
刷新 GCP 的访问令牌 ( npx google-artifactregistry-auth ./.npmrc
)
运行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
但是,当我尝试通过以下方式在另一个项目上安装包时:
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.