GitHub Action自动发布NPM包失败求助:404错误排查
问题排查与解决方案
核心问题定位
你的错误本质是NPM发布请求未携带有效授权信息,NPM Registry为了保护包的权限状态,会以404(而非更直观的403)响应未授权请求,这是官方的权限保护策略。
工作流配置修复
你的GitHub Action存在两个关键问题:
env配置缩进错误,导致NODE_AUTH_TOKEN未传递给npm publish命令- 重复执行
npm ci,无意义且浪费构建资源
修复后的完整工作流
# NPM Publish is the name for this action name: NPM Publish # This action will trigger on every release get created on: release: types: [created] # Job will run on a ubuntu instance jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: "16.X" registry-url: https://registry.npmjs.org/ # 直接将token配置到setup-node,更简洁可靠 node-auth-token: ${{ secrets.NPM_SECRET }} - run: npm ci - run: npm test # 发布到NPM - run: npm publish --access public
如果倾向保留原结构,只需修正env的缩进(必须与run同级):
# (前面步骤省略) - run: npm publish --access public env: NODE_AUTH_TOKEN: ${{ secrets.NPM_SECRET }}
额外排查步骤
- 验证NPM Token权限:登录NPM官网进入「Access Tokens」页面,确认
NPM_SECRET对应的token拥有Publish权限,且关联账号是react-lightbox-js包的拥有者或协作者。 - 核对版本号:确保仓库
package.json的version字段与GitHub Release的版本号完全一致(错误中显示为1.2.1),避免发布已存在的版本。 - 本地模拟测试:在本地执行
npm login后,运行npm publish --access public --dry-run,确认是否能正常模拟发布,排查是否是本地包配置或账号权限问题。
内容的提问来源于stack exchange,提问作者Harsh nahta
相关产品推荐
相关产品推荐

