纱线添加 - 私人包 - 404 未找到

Ale*_*dre 13 yarnpkg

我想使用 Yarn 安装托管在内部 Gitlab 上的私有包。因此,我.npmrc使用以下信息配置了我的:

@mypackage:registry=https://gitlab.intra/api/v4/packages/npm/
//gitlab.intra/api/v4/projects/819/packages/npm/:_authToken=xxxxx
//gitlab.intra/api/v4/packages/npm/:_authToken=xxxxx
always-auth=true
Run Code Online (Sandbox Code Playgroud)

当我尝试使用安装包时yarn add @mypackage/lib-node-client,Yarn 给我一个错误:

Trace: 
  Error: https://gitlab.intra/api/v4/projects/725/packages/npm/@mypackage/lib-node-common/-/@mypackage/lib-node-common-21.7.1.tgz: Request failed "404 Not Found"
      at ResponseError.ExtendableBuiltin (/usr/lib/node_modules/yarn/lib/cli.js:696:66)
      at new ResponseError (/usr/lib/node_modules/yarn/lib/cli.js:802:124)
      at Request.<anonymous> (/usr/lib/node_modules/yarn/lib/cli.js:67062:16)
      at Request.emit (node:events:369:20)
      at Request.module.exports.Request.onRequestResponse (/usr/lib/node_modules/yarn/lib/cli.js:141640:10)
      at ClientRequest.emit (node:events:369:20)
      at HTTPParser.parserOnIncomingClient (node:_http_client:646:27)
      at HTTPParser.parserOnHeadersComplete (node:_http_common:129:17)
      at HTTPParser.execute (<anonymous>)
      at TLSSocket.socketOnData (node:_http_client:512:22)
Run Code Online (Sandbox Code Playgroud)

所以,Yarn 找不到 URL:https://gitlab.intra/api/v4/projects/725/packages/npm/@mypackage/lib-node-common/-/@mypackage/lib-node-common-21.7.1.tgz

如果我尝试在浏览器上获取此内容,我可以下载该软件包...

如果有人可以帮助我,谢谢大家:)

小智 5

在您的.npmrc文件中,您讲述了如何连接到项目 819 的 GitLab。错误与项目 725 有关。GitLab 简单地拒绝连接。

尝试用

@mypackage:registry=https://gitlab.intra/api/v4/packages/npm/
//gitlab.intra/api/v4/projects/725/packages/npm/:_authToken=xxxxx
//gitlab.intra/api/v4/projects/819/packages/npm/:_authToken=xxxxx
//gitlab.intra/api/v4/packages/npm/:_authToken=xxxxx
always-auth=true
Run Code Online (Sandbox Code Playgroud)


Bad*_*ibo 5

我们有一个 gitlab 私有包注册表,并且不断收到此错误。 npm i @placeholder/package-name工作正常,但yarn add @placeholder/package-name出现 404 错误。

我尝试了该线程上列出的所有可能的解决方案。最后,gitlab 中有一个关于纱线安装故障排除的部分[1]。它说,

尝试将其添加到您的 .npmrc 文件中(并将 <your_token> 替换为您的个人访问令牌或部署令牌):

//gitlab.example.com/api/v4/projects/:_authToken=<your_token>
Run Code Online (Sandbox Code Playgroud)

我们之前的.npmrc样子是这样的

save-exact=true
unsafe-perm=true
@placeholder:registry=https://gitlab.com/api/v4/packages/npm/
//gitlab.com/api/v4/packages/npm/:_authToken=${PLACEHOLDER_TOKEN}
Run Code Online (Sandbox Code Playgroud)

添加上面的新行后,它看起来像这样,

save-exact=true
unsafe-perm=true
@placeholder:registry=https://gitlab.com/api/v4/packages/npm/
//gitlab.com/api/v4/packages/npm/:_authToken=${PLACEHOLDER_TOKEN}
//gitlab.com/api/v4/projects/:_authToken=${PLACEHOLDER_TOKEN}
Run Code Online (Sandbox Code Playgroud)

添加后,yarn add @placeholder/package-name效果很好。


[1] https://docs.gitlab.com/ee/user/packages/npm_registry/#error-running-yarn-with-the-package-registry-for-npm-registry