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

I'm having an issue with installing an NPM package from GCP.

I was able to upload the package to the artifact registry of GCP by doing the following steps:

  1. Login to my google account (gcloud auth application-default login)

  2. Run

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

  3. Pasting the output of the previous step in the .npmrc file located in the root of the project.

  4. Refreshing the access token to GCP (npx google-artifactregistry-auth ./.npmrc)

  5. Run yarn publish

My .npmrc file looks like this:

@[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

However, when I try to install the package on another project by:

  1. Executing steps 1-4 mentioned above
  2. Run yarn add @[my-scope]/[my-package]

I get an 404 error. Looks like yarn is looking for the package in the default registry:

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\"".

I simply followed the steps mentioned in the installation instructions in GCP but somehow it's not working.

I encountered a similar issue in this post: Can't install a scoped package I published to a npm registry in GCP but this not the exact error I get.

I would appreciate any help regarding this issue.

Thanks in advance!



Solution 1:[1]

In both setting up authentication for npm and Managing Node.js packages, Obtaining an access token section the command used is

npx google-artifactregistry-auth

In the same section there is a note that explains how to add flags if you need to change the path of the .npmrc file.

Note: If you need to store your repository settings and credentials in .npmrc files other than the defaults, you can run the credential helper with additional flags.

--repo-config is the .npmrc file with your repository settings. If you don't specify this flag, the default location is the current directory.

--credential-config is the path to the .npmrc file where you want to write the access token. The default is your user .npmrc file.

Instead of:

npx google-artifactregistry-auth ./.npmrc

It could be written as

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

If you are not sure where your file is you can run npm config ls -l | grep config as explained here

Also check you are specifying the correct .npmrc path if it is different than the default registry as shown in Configuring npm and confirm you are trying to install a package from the Node.js package repository with the correct scope, package, tag or version to be completely explicit.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1