GitLab 使用 NPM 发布包时出现“404 Not Found”错误

GitLab '404 Not Found' error when publishing a package using NPM

我在尝试使用 NPM 和 GitLab 的 'instance-level' scope/namespace 配置将包发布到 GitLab private/self-hosted 实例的包存储库时遇到 404 Not Found 错误( reference).

错误

执行 $ TOKEN=<ACCESS_TOKEN> npm publish 导致以下错误:

npm ERR! code E404
npm ERR! 404 Not Found - PUT https://gitlab.example.com/api/v4/packages/npm/@org%2fpackage-1 - 404 Not Found
npm ERR! 404 
npm ERR! 404  '@org/package-1@0.1.0' 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.

配置

我的npm配置如下:

package.json

{
  "name": "@org/package-1",
  "version": "0.1.0",
  "private": false,
  "peerDependencies": {
  },
  "dependencies": {
  }
}

~/.npmrc

@org:registry=https://gitlab.example.com/api/v4/packages/npm/
//gitlab.example.com/api/v4/packages/npm/:_authToken=$TOKEN

# @org/package-1
//gitlab.example.com/api/v4/projects/<PROJECT_ID>/packages/npm/:_authToken=$TOKEN

# @org/package-2
//gitlab.example.com/api/v4/projects/<PROJECT_ID>/packages/npm/:_authToken=$TOKEN

# @org/package-3
//gitlab.example.com/api/v4/projects/<PROJECT_ID>/packages/npm/:_authToken=$TOKEN

解决方案

publishConfig 添加到 package.json 以及与代码存储库关联的 GitLab 包存储库的 URL。

package.json(部分)

"publishConfig": {
    "@org:registry": "https://gitlab.example.com/api/v4/projects/<PROJECT_ID>/packages/npm/"
},