58

我刚刚在 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"

如何添加/获取此特权?

4

5 回答 5

75

除了在 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}
    

查看相关的Github Packages 文档

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

于 2020-08-04T09:30:24.400 回答
20

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

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

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

于 2019-11-19T10:05:39.493 回答
5

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

我收到了指定的错误:

npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="GitHub Package Registry"

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

我已将我的 github 操作设置为NODE_AUTH_TOKEN来自名为 的组织秘密GPR_PRIVATE_READ_TOKEN,该秘密在另一个 repo 中工作。

原来的问题是这个秘密被定义为只对私有存储库可用,而我试图在公共存储库中使用它。当我将秘密提供给公共存储库时,一切正常。

我的工作流程工作看起来像这样(我将显示安装步骤的所有步骤,以防有人看到):

jobs:
  ci:
    name: Run Tests
    steps:
      - name: Use Node.js 12.x
        uses: actions/setup-node@v1
        with:
          node-version: 12.x
          registry-url: https://npm.pkg.github.com/

      - uses: actions/checkout@v2

      - name: Install dependencies based on package-lock.json
        run: npm ci
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GPR_PRIVATE_READ_TOKEN }}
于 2021-03-30T18:42:26.793 回答
1

如果您的问题仍然存在,请确保您的包名称格式正确。

在此处输入图像描述

于 2021-02-07T12:28:34.953 回答
-3

这对我有用

C:\Program Files\nodejs\node_modules\npm\npmrc

在此处更新文件,您的错误将得到解决

于 2021-04-05T13:06:34.560 回答