将Node.js包发布到GitHub Packages时遇ENEEDAUTH错误求助
解决GitHub Actions发布NPM包到GitHub Packages失败问题
针对你遇到的官方模板无法发布到GitHub Packages的问题,可按以下步骤排查修复:
1. 修正package.json的包名格式
GitHub Packages要求NPM包名必须包含GitHub用户名作为scope,格式为@<你的GitHub用户名>/<包名>。你的package.json中当前包名为wow-calendar.js,缺少scope,导致发布时权限匹配失败。修改后示例:
{ "name": "@Roo7K1d/wow-calendar.js", // 其他字段保持不变 }
2. 调整项目根目录的.npmrc配置
确保你的.npmrc文件指定了对应scope的包发布到GitHub Packages,内容如下:
@Roo7K1d:registry=https://npm.pkg.github.com/ //npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN}
这个配置会让@Roo7K1d前缀的包默认使用GitHub Packages仓库,同时自动读取环境变量中的认证token。
3. 确认Workflow的环境变量传递
你的Workflow中npm publish步骤的NODE_AUTH_TOKEN已正确引用secrets.GITHUB_TOKEN,且已配置permissions: packages: write,这部分权限设置无需调整。只需确保仓库的Actions权限未限制GITHUB_TOKEN的包操作权限即可。
4. 简化Workflow(可选优化)
可合并build和publish步骤的重复操作,减少冗余执行,示例修改后的Workflow:
name: Node.js Package (GHP) on: release: types: [created] jobs: build-and-publish: runs-on: ubuntu-latest permissions: contents: read packages: write steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: 18 registry-url: https://npm.pkg.github.com/ scope: '@Roo7K1d' - run: npm ci - run: npm test - run: npm publish env: NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
完成以上调整后,重新触发Release事件即可正常发布到GitHub Packages。
内容的提问来源于stack exchange,提问作者RootK1d
相关产品推荐
相关产品推荐

