You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从GitHub Actions发布NPM包至GitHub Packages遇E400认证错误

解决GitHub Actions发布到GitHub Packages的E400认证错误

嘿,我来帮你搞定这个烦人的E400认证错误!从你的配置来看,主要有两个核心问题需要修正:

1. 默认GITHUB_TOKEN权限不足

GitHub Actions提供的默认GITHUB_TOKEN虽然能访问仓库,但没有发布GitHub Packages的权限。你需要在workflow里显式为它添加write:packages权限,或者改用个人访问令牌(PAT)。

方案A:为默认GITHUB_TOKEN添加权限

在你的workflow最顶部(jobs之前)添加权限配置:

name: Node install, build and test
on: [push]
# 新增权限配置,赋予发布packages的权限
permissions:
  contents: read
  packages: write
jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [12.x]
    steps:
      - uses: actions/checkout@v1
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}
      # 简化npmrc配置,去掉冗余步骤
      - name: Configure npm for GitHub Packages
        run: |
          echo "@your-username:registry=https://npm.pkg.github.com/" >> ~/.npmrc
          echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> ~/.npmrc
      - name: Publish to Github Packages
        run: npm publish

注意替换@your-username为你的GitHub用户名或组织名,这个必须和你package.json里的name字段前缀一致(比如"name": "@your-username/your-package")。

方案B:使用个人访问令牌(PAT)

如果默认token的权限调整还是不行,你可以创建一个PAT,勾选write:packages、read:packages和repo权限,然后把它添加到仓库的Secrets里(命名为GH_PAT),再在workflow里替换GITHUB_TOKEN为GH_PAT:

# 在Configure npm步骤里改成:
echo "//npm.pkg.github.com/:_authToken=${{ secrets.GH_PAT }}" >> ~/.npmrc

2. 移除冗余的npm配置步骤

你原来的配置里同时用了echo创建npmrc和npm config set _auth,这会造成配置冲突。只需要用echo正确写入npmrc即可,不需要额外的npm config set命令。

最后检查package.json

确保你的name字段包含GitHub用户名/组织的scope,比如:

{
  "name": "@your-username/your-package-name",
  "publishConfig": {
    "registry": "https://npm.pkg.github.com/"
  }
}

这样调整后,应该就能成功发布到GitHub Packages了!

内容的提问来源于stack exchange,提问作者SebastianG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:35:09