我刚刚在GitHub上发布了一个私有软件包,试图弄清楚它应该如何工作。现在我正在尝试将它安装到另一个项目中。我使用npm login --registry=https://npm.pkg.github.com
进行了身份验证,使用的访问令牌具有write:packages
,read:packages
和repo
权限。当尝试运行npm install https://npm.pkg.github.com/@orgname/package-name
时,我收到一条错误消息:
npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="GitHub Package Registry"
如何添加/获取此特权?
7条答案
按热度按时间xwbd5t1u1#
除了在npm配置中设置注册表外,您还需要在Github上生成一个个人访问令牌,并将其添加到您的npm配置中:
Generate new token
read:packages
Generate token
并复制令牌.npmrc
:参见相关的Github Packages documentation
相关:对于Github操作,请注意
GITHUB_TOKEN
和个人访问令牌之间的区别。Github令牌的权限仅限于包含您的工作流的存储库。对于其他任何内容(包括超出Github令牌所允许的粒度权限),您需要个人访问令牌。hgqdbh6s2#
显然我是一个白痴谁不能阅读文档,错过了这一部分:
在
package.json
文件所在的目录中,创建或编辑.npmrc
文件,使其包含指定GitHub Packages URL和帐户所有者的行。将OWNER替换为拥有包含您项目的存储库的用户或组织帐户的名称。registry=https://npm.pkg.github.com/OWNER
7jmck4yq3#
还有一件事需要检查(我花了一段时间才意识到):
我得到了指定的错误:
即使我认为我正确地为GITHUB令牌提供了所需的权限。
我已经将github操作设置为设置来自名为
GPR_PRIVATE_READ_TOKEN
的组织机密的NODE_AUTH_TOKEN
,它在另一个repo中工作。原来问题是这个秘密被定义为只对私有仓库可用,而我试图在公共仓库中使用它。当我把这个秘密提供给公共仓库时,一切都正常了。
我的工作流作业看起来像这样(我显示了安装步骤之前的所有步骤,以防有人看到它有帮助):
sqougxex4#
如果问题仍然存在,请确保包名称格式正确。
92vpleto5#
上面的answer是我的解决方案。更新后的版本记录为。此外,我必须确保我的PAT(个人访问令牌)被授权访问我的组织存储库。
eit6fx6z6#
我很难弄清楚为什么.npmrc文件只有在我把PAT明文放在文件中时才能工作,这看起来很愚蠢!修复方法是将“TOKEN”环境变量设置为工作流文件的一部分。我有:
上面的
secrets.TOKEN
指的是我为需要访问github包的仓库创建的仓库密码:(存储库〉设置〉安全性〉机密〉操作)x1c 0d1x这个秘密的值是从我为自己创建的一个只有
read:packages
作用域的个人访问令牌中复制的:(用户设置〉开发者设置〉个人访问令牌〉令牌(经典))看到它检测到这个令牌的使用也让人放心!
最后,我的
.npmrc
文件包含:我用的是我自己的用户名而不是组织名称,因为这对我来说是有效的。我想我可以在升级到Github Enterprise时使用组织名称。
fhg3lkii7#
这就是我的工作
第一个月
更新文件在这里&你的错误将被解决