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

发布npm包到GitHub Package Registry时报E401认证失败如何解决?

报错原因
  • 核心原因:你使用sudo执行npm命令。sudo会切换到root用户上下文,actions/setup-node为当前runner用户配置的npm认证信息、以及你传入的NODE_AUTH_TOKEN环境变量不会被root用户继承,导致npm请求GitHub Registry时没有携带认证token,触发401错误。
  • 次要潜在问题:
    1. package.json的repository字段格式错误,git://github.com/@company-name/repository-name.git中的组织名前多了@符号,虽然不是直接触发401的原因,但会导致后续发布校验不通过。
    2. 版本号带v前缀不符合npm版本号规范,可能引发版本匹配异常。
    3. 工作目录切换到.generated/后,该目录下没有对应的.npmrc配置,也可能导致registry识别异常。
    4. GITHUB_TOKEN默认权限不足,没有写入包的权限。
修复方案
  1. 首先去掉npm命令前的sudo,GitHub Action的默认runner账户拥有足够权限执行npm操作,无需额外提权:
- name: Install and publish
  working-directory: .generated/
  run: |
    npm install
    npm publish
  env:
    NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  1. 修正package.json的配置项:
{
    "name": "@company-name/repository-name",
    "version": "1.7.0",
    "repository": "git://github.com/company-name/repository-name.git"
}
  1. 若.generated/目录下没有.npmrc配置,可在执行命令前手动写入:
run: |
  echo "@company-name:registry=https://npm.pkg.github.com" > .npmrc
  npm install
  npm publish
  1. 进入仓库的Settings > Actions > General > Workflow permissions页面,确认GITHUB_TOKEN的权限设置为「Read and write permissions」,确保拥有包的写入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:57:04