GitHub Actions发布npm包报错`<package>不在npm registry`如何解决?
报错原因
npm返回404不代表包真的不存在,出于隐私保护策略,当账号/令牌没有对应包的操作权限时,npm也会返回404状态码避免私有包被枚举。结合你本地可正常发布的情况,核心原因是GitHub Actions中使用的令牌权限、工作流配置存在问题,常见触发场景如下:
actions/setup-node未显式指定npm官方源,CI环境默认源匹配异常- 生成的npm Automation token权限不足,或未开启2FA豁免
- GitHub仓库中存储的
npm_token密钥配置错误,值不匹配 - 未显式指定包的公开访问权限,npm默认按私有包校验触发权限拦截
修复方案
- 修正工作流配置,显式指定Node版本和npm官方源,公开包可添加
--access public参数避免权限校验问题,修改后完整配置如下:
name: Publish package on npm on: release: types: [created] jobs: publish-npm: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: '16' # 替换为你项目实际使用的Node.js版本 registry-url: 'https://registry.npmjs.org/' - run: npm ci - run: npm publish --access public env: NODE_AUTH_TOKEN: ${{secrets.npm_token}}
- 校验npm令牌配置
登录npm官网进入访问令牌管理页,确认你生成的是Automation类型的令牌,而非普通Publish类型;如果你的账号开启了双重验证,需确认Automation令牌已开启2FA豁免权限,支持CI环境免验证发布。 - 校验GitHub密钥配置
进入对应GitHub仓库的「Settings - Secrets and variables - Actions」页面,确认存储的npm_token值和npm官网生成的令牌完全一致,无多余空格、换行符。
内容的提问来源于stack exchange,提问作者Steren
相关产品推荐
相关产品推荐

