Не удается установить пакет с областью действия, который я опубликовал в реестре npm в GCP

# #npm #google-cloud-platform #npm-install #google-artifact-registry

Вопрос:

Я опубликовал несколько пакетов npm в частном реестре npm, размещенном в GCP, и я могу видеть все версии в реестре. Тем не менее, я не могу загрузить пакет, так как команда установки выдает 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]""}
 

Кроме того, я проверил, и моя учетная запись на самом деле должна загружать роль Artifacts.
Я не могу понять, почему он не может разрешить URL-адрес, так как с той же конфигурацией я могу как публиковать, так и даже запускать npm view пакет.
Я попытался создать совершенно новые пакеты, указать версию, сбросить маркер аутентификации, но по какой-то причине я все еще не могу загрузить пакеты.

Если это поможет, мой текущий файл .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]
 

Ответ №1:

Оказывается, это была не конкретная проблема GCP, а проблема с пряжей при публикации в GCP. Создаваемый tarballURL использует усеченный URL-адрес реестра, поэтому при попытке установить пакет я получал 404. Исправление для этого было предложено здесь. https://github.com/yarnpkg/berry/pull/3513