403请求安装私人gemfury软件包时

问题描述

如何从我自己的帐户安装来自gemfury的私有软件包。

尝试从我的gemfury帐户安装私有软件包时收到403。

yarn --verbose
...
verbose 0.22845086 Found configuration file "/Users/chrisbest/Documents/test-client/.yarnrc".
...
verbose 0.234278553 current time: 2020-08-26T17:06:01.680Z
[1/5] ?  Validating package.json...
[2/5] ?  Resolving packages...
verbose 0.454187488 Performing "GET" request to "https://npm.fury.io/testorg/@testscope%2fbutton".
verbose 1.61564947 Request "https://npm.fury.io/testorg/@testscope%2fbutton" finished with status code 403.
verbose 1.630735964 Error: Couldn't find package "@testscope/button@^1.0.0" required by "[email protected]" on the "npm" registry.

我在Gemfury上试用了组织帐户和协作者个人帐户。

我已经发布了一个可以通过Web UI看到的名为button的软件包(我也尝试了@ lhpublic / button`)。

我已将范围限定的注册表url添加到在"@testscope:registry" "https://npm.fury.io/testorg/"上方列出的.yarnrc文件中,并且yarn确实向我指定的url发出了请求。

我已经设置了npm config set always-auth true并使用我的gemfury合作者帐户npm login --registry=https://npm.fury.io/testorg登录注册表,并在〜/ .npmrc中看到了

always-auth=true
//npm.fury.io/:_authToken={my token}

运行yarn --verbose info @testscope/button时,我还会看到403,而yarn --verbose info button成功返回了公共npm注册表上无关的button软件包的信息。

解决方法

似乎您在npm login命令中省略了URL末尾斜杠。如果您以以下方式运行命令:

$ npm login --registry="https://npm.fury.io/testorg/"

npm将在〜/ .npmrc中正确保存您的Gemfury回购凭证:

//npm.fury.io/testorg/:_authToken={my token}

参考:https://gemfury.com/help/private-yarn/#scoped-packages