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

时间:2019-11-18 16:51:11

标签: github npm npm-install npm-login

我刚刚在GitHub上发布了一个私有软件包,试图弄清楚它应该如何工作。现在我正在尝试将其安装在另一个项目中。我使用具有npm login --registry=https://npm.pkg.github.comwrite:packagesread: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"

如何添加/获取此特权?

5 个答案:

答案 0 :(得分:20)

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

  • 在Github中,导航至https://github.com/settings/tokens(“设置”>“开发者设置”>“个人访问令牌”),您应该看到类似以下内容的内容:

enter image description here

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

enter image description here

  • 点击Generate token并复制令牌

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

    @{{OWNER}}:registry=https://npm.pkg.github.com
    //npm.pkg.github.com/:_authToken={{TOKEN}}
    

相关:对于Github Actions,请注意GITHUB_TOKEN与个人访问令牌之间的区别。 Github令牌的权限为limited to the repository that contains your workflow。对于其他任何事情(包括超出Github令牌所允许的细粒度权限),您都需要一个个人访问令牌。

答案 1 :(得分:4)

显然我是个白痴,看不懂文档,却错过了这一部分:

  

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

     

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

答案 2 :(得分:1)

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

我收到了指定的错误:

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,该机密在另一个存储库中工作。

事实证明问题是秘密被定义为仅对私有存储库可用,而我试图在公共存储库中使用它。当我将机密提供给公共存储库时,一切正常。

我的工作流作业看起来像这样(我展示了安装步骤之前的所有步骤,以防有人看到它有帮助):

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 }}

答案 3 :(得分:0)

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

enter image description here

答案 4 :(得分:0)

这对我有用

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

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