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

Github Actions执行npm publish时出现NPM ERR! E403错误如何解决?

解决GitHub Actions发布私有NPM包到GitHub Packages的403权限错误

你遇到的403错误核心是默认的GITHUB_TOKEN没有足够权限创建组织级别的NPM包,以下是针对性的解决步骤:

1. 配置工作流的权限声明

默认GITHUB_TOKEN仅拥有只读权限,需要在工作流中明确授予包写入权限。修改你的工作流文件,在jobs上方添加权限配置:

name: newguides

on:
  push:
    branches:
      - main

# 添加权限配置
permissions:
  contents: read  # 读取仓库内容的必要权限
  packages: write # 写入GitHub Packages的关键权限

jobs:
  publish-gpr:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: 12
          registry-url: https://npm.pkg.github.com/
          scope: '@xxxxxxxx'
      - run: npm install
      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}

也可以直接在仓库全局设置中调整:进入仓库Settings > Actions > General > Workflow permissions,选择Read and write permissions并保存。

2. 校验package.json的核心配置

确保package.json中的包名与组织scope完全匹配,避免命名不一致导致权限校验失败:

  • name字段必须为@组织名/包名格式,例如:
    "name": "@xxxxxxxx/newguides"
    
  • 可选:添加publishConfig字段明确指定发布地址,避免npm自动路由错误:
    "publishConfig": {
      "registry": "https://npm.pkg.github.com/",
      "@xxxxxxxx:registry": "https://npm.pkg.github.com/"
    }
    

3. 替换为个人访问令牌(PAT)(备选方案)

如果默认GITHUB_TOKEN仍无法生效,可创建拥有更高权限的个人访问令牌:

  1. 进入GitHub个人设置:Settings > Developer settings > Personal access tokens > Generate new token
  2. 勾选write:packages权限,生成令牌后复制保存
  3. 在目标仓库的Settings > Secrets and variables > Actions中,添加名为NPM_PUBLISH_TOKEN的密钥,值为刚才复制的令牌
  4. 修改工作流中的环境变量:
    - run: npm publish
      env:
        NODE_AUTH_TOKEN: ${{secrets.NPM_PUBLISH_TOKEN}}
    

4. 检查组织级别的包权限设置

如果上述步骤仍无效,需确认组织是否限制了包的创建权限:

  • 进入组织的Settings > Packages > Packages settings
  • 检查是否允许仓库向组织发布包,或是否存在其他权限策略限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:45:26