如何解决使用 GitLab NPM 注册表时 npm 发布失败
我尝试使用新的 NPM 注册表,它现在是免费 GitLab 版本的一部分。我正在尝试创建一个 NPM 包并将其发布到我们公司的 GitLab 实例上。尝试运行 npm publish
时,进程退出并显示错误:
npm ERR! code E404
npm ERR! 404 Not Found - PUT https://gitlab.myemployer.com/api/v4/projects/1873/packages/npm/@sqt-klu%2fodysseus-nn-core
npm ERR! 404
npm ERR! 404 '@sqt-klu/odysseus-nn-core@0.0.1' 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.
通过 GitLab CI/CD 以及通过本地命令行运行时会出现此问题。
作为参考,我们内部 GitLab 的 URL 是 gitlab.myemployer.com/sqt-klu/odysseus/nn-core。因此,我认为 @sqt-klu
是 GitLab 想要的范围。
CI/CD 文件(以及我一直在尝试在本地复制的文件)在 npm publish
阶段的 before_script
之前执行此操作:
- npm config set @sqt-klu:registry https://gitlab.myemployer.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/
- npm config set https://gitlab.myemployer.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken ${CI_JOB_TOKEN}
在本地,我的用户级 npmrc 如下(删除了实际令牌,但它是已分配所有可能范围的个人访问令牌):
audit-level=high
python=c:\Python27\python.exe
https://gitlab.myemployer.com/api/v4/projects/1873/packages/npm/:_authToken=redacted
@sqt-klu:registry=https://gitlab.myemployer.com/api/v4/projects/1873/packages/npm/
如果相关,这里是 package.json
的关键内容(我省略了 contributors
、dependencies
、devDependencies
、engine
和 {{ 1}} 在此摘录中):
author
我也按照 this official guide 尝试了几个不同的包名称,但无济于事。
我觉得我遗漏了一些非常微不足道的东西,但我被困在了这一点上。任何有用的指针或想法表示赞赏。
注意:我已经替换了所有提到的端点的 FQDN,以防我的雇主对此感到不满。
解决方法
在这种情况下,404 错误可能会令人困惑地表示凭据问题。
你应该更换
-
https://gitlab.myemployer.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken
与: //gitlab.myemployer.com/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken
所有其他设置看起来都不错*并且应该可以工作。默认情况下,Gitlab 项目应启用包存储库功能。您可以在项目设置中启用/禁用它。
* 您可以将个人访问令牌的范围缩小到仅 api
。
当/如果您使用项目级或组织/组级部署令牌时,它们只需要 read_package_registry
和/或 write_package_registry
。
就我而言,我遇到了类似的问题,这个问题帮助我理解了这个问题。
- 检查
package.json
和publishConfig
设置。如问题所示,格式为@company:registy
。起初我误解了,我认为“注册”是指它的名字。但它的字面意思是“注册表”。
希望对大家有所帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。