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

使用Trusted Publishing从GitHub Actions发布npm时出现404错误?

解决GitHub Actions OIDC发布npm包时的404错误

问题背景

用GitHub Actions的Trusted Publishing(OIDC认证)替代长期令牌发布npm包,工作流配置看似没问题,但发布时弹出404错误,提示版本不在注册表中:

npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
npm error code E404
npm error 404 Not Found - PUT https://registry.npmjs.org/vite-plugin-slow-response - Not found
npm error 404
npm error 404  'vite-plugin-slow-response@1.0.5' is not in this registry.

工作流文件./.github/workflows/publish.yml内容:

name: Publish

on:
  push:
    tags:
      - 'v*.*.*'

jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: 'npm'
          registry-url: 'https://registry.npmjs.org'
      - run: npm ci
      - run: npm test
      - run: npm run build
      - run: npm publish

解决步骤

1. 核对npm端Trusted Publisher配置

登录npm官网,进入目标包的「Settings」→「Trusted Publishers」页面,确认:

  • 关联的GitHub仓库所有者(用户名/组织名)和你实际的仓库完全一致
  • 仓库名称拼写无错误(必须和GitHub上的仓库名完全匹配)
  • 触发规则设置为「Tag push matches v*.*.*」,和工作流的触发条件对齐
  • 如果你是第一次发布这个包,确保你是npm上该包名的所有者(包名未被他人占用)

2. 修正工作流细节

  • 别手动设置NODE_AUTH_TOKEN环境变量,actions/setup-node@v4会自动通过OIDC获取并配置认证令牌
  • 在npm publish命令后显式加--access public(即使默认是公开,显式指定能避免权限歧义),修改后的步骤:
    - run: npm publish --access public
    
  • 检查package.json里的name字段,必须和错误信息中的vite-plugin-slow-response完全一致(大小写、连字符都不能错)

3. 验证OIDC认证是否生效

在工作流里加个调试步骤,查看npm认证状态:

- run: npm whoami

如果该步骤返回你的npm用户名,说明认证成功;要是返回401/403错误,证明OIDC配置没生效,得重新检查npm端的Trusted Publisher设置。

4. 首次发布的特殊处理

如果是第一次发布这个包,可先在本地用你的npm账号手动执行一次npm publish --access public(确保包名在npm上注册成功),之后再通过GitHub Actions发布后续版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.08 22:04:49