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仍无法生效,可创建拥有更高权限的个人访问令牌:
- 进入GitHub个人设置:
Settings > Developer settings > Personal access tokens > Generate new token - 勾选
write:packages权限,生成令牌后复制保存 - 在目标仓库的
Settings > Secrets and variables > Actions中,添加名为NPM_PUBLISH_TOKEN的密钥,值为刚才复制的令牌 - 修改工作流中的环境变量:
- run: npm publish env: NODE_AUTH_TOKEN: ${{secrets.NPM_PUBLISH_TOKEN}}
4. 检查组织级别的包权限设置
如果上述步骤仍无效,需确认组织是否限制了包的创建权限:
- 进入组织的
Settings > Packages > Packages settings - 检查是否允许仓库向组织发布包,或是否存在其他权限策略限制
内容的提问来源于stack exchange,提问作者Julius Goddard
相关产品推荐
相关产品推荐

