npm publish提示需登录但已登录 GitHub Actions发布npm包失败如何解决
问题排查与解决步骤
根因说明
你遇到的两个问题核心原因如下:
- GitHub Actions默认的
secrets.GITHUB_TOKEN仅有权限发布到GitHub Packages,推送时npm默认自动匹配了GitHub的npm源,因此不会发布到npmjs官方源。 - 本地发布报错是因为本地npm配置的源、登录态被覆盖或失效,大概率是此前操作时误将默认源切换为了GitHub Packages源,或者本地登录信息被清空。
一、修复本地手动发布问题
- 首先检查当前npm默认源:执行
npm config get registry,如果返回值不是https://registry.npmjs.org/,执行以下命令切换回官方源:
npm config set registry https://registry.npmjs.org/
- 重新登录npm官方账号:执行
npm adduser,按提示输入npmjs账号的用户名、密码、绑定邮箱,开启了二次验证的话还要输入验证码。 - 登录完成后重新执行
npm publish即可正常发布。
二、修复GitHub Actions自动发布到npmjs官方源的问题
- 登录npmjs官网,进入账号设置生成发布权限的Access Token,如果账号开启了2FA,需要选择「自动化」类型的token,避免发布时需要二次校验。
- 打开你的GitHub仓库,进入
设置 → Secrets and variables → Actions,新建一个密钥,名称自定义为NPM_TOKEN,值为刚才在npmjs生成的token。 - 修改GitHub Actions的配置文件,替换原有发布逻辑,参考配置如下:
- name: Run build run: yarn build - name: Publish to npm official registry run: npm publish --access public # 如果是公开的作用域包需要加--access public参数,非作用域包可以去掉 env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
补充说明:如果你的项目根目录有
.npmrc文件,请确认文件内配置的registry为https://registry.npmjs.org/,否则需要在publish命令后添加--registry https://registry.npmjs.org/明确指定官方源。
内容的提问来源于stack exchange,提问作者Mnigos
相关产品推荐
相关产品推荐

