从 github npm 注册表安装软件包 - 身份验证错误 401

Mic*_*ski 42 github npm npm-install npm-login

我刚刚在 GitHub 上发布了一个私有包,试图弄清楚它应该如何工作。现在我正在尝试将它安装在另一个项目中。我使用npm login --registry=https://npm.pkg.github.com具有write:packages,read:packagesrepo权限的访问令牌进行了身份验证。在尝试运行时,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"
Run Code Online (Sandbox Code Playgroud)

如何添加/获得此权限?

br3*_*3w5 57

除了在 npm 配置中设置注册表之外,您还需要在 Github 上生成个人访问令牌并将其添加到您的 npm 配置中:

  • 在 Github 中导航到https://github.com/settings/tokens(设置 > 开发人员设置 > 个人访问令牌),您应该会看到如下内容:

在此处输入图片说明

  • 点击 Generate new token
  • 从权限中选择至少 read:packages

在此处输入图片说明

  • 单击Generate token并复制令牌

  • 将以下内容添加到您的本地.npmrc

    @${OWNER}:registry=https://npm.pkg.github.com
    //npm.pkg.github.com/:_authToken=${TOKEN}
    
    Run Code Online (Sandbox Code Playgroud)

查看相关的Github Packages 文档

相关:对于 Github 操作,请注意GITHUB_TOKEN个人访问令牌和个人访问令牌之间的区别。Github 令牌的权限仅限于包含您的工作流的存储库。对于其他任何事情(包括 Github 令牌允许的细化权限),您需要一个个人访问令牌。

  • 您拥有绿色复选标记!我没有注意到这两句话说的不是同一件事。我最终得到了 `@{{OWNER}}:registry=https://npm.pkg.github.com/:_authToken={{TOKEN}}` 当然,这是行不通的。非常感谢 (2认同)
  • 添加 `registry=https://npm.pkg.github.com/OWNER` 是不够的。这个答案有帮助。 (2认同)

Mic*_*ski 19

显然我是个白痴,无法阅读文档并错过了那部分:

在与您的package.json文件相同的目录中,创建或编辑.npmrc文件以包含指定 GitHub 包 URL 和帐户所有者的行。将 OWNER 替换为拥有包含您的项目的存储库的用户或组织帐户的名称。

registry=https://npm.pkg.github.com/OWNER

  • 我也做了这个,但还不够。我还找不到解决这个问题的方法。 (11认同)
  • 我遇到了 npm > 7 的问题,我必须更改此行以使用确切的范围:`@scope:registry=https://npm.pkg.github.com` (2认同)

Mik*_*ert 5

另一件需要检查的事情(这花了我一段时间才意识到):

我收到指定的错误:

npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="GitHub Package Registry"
Run Code Online (Sandbox Code Playgroud)

尽管我认为我正确地提供了具有所需权限的 GITHUB TOKEN。

我已经设置了 github 操作来设置NODE_AUTH_TOKEN名为 的组织秘密GPR_PRIVATE_READ_TOKEN,该秘密在另一个存储库中工作。

事实证明,问题在于该秘密被定义为仅适用于私有存储库,而我试图在公共存储库中使用它。当我将这个秘密提供给公共存储库时,一切都正常了。

我的工作流程作业如下所示(我显示了安装步骤之前的所有步骤,以防有人看到有帮助):

npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="GitHub Package Registry"
Run Code Online (Sandbox Code Playgroud)