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

使用GitHub NPM registry执行npm login出现401 Unauthorized错误如何解决

问题原因排查与解决方法

报错路径说明

你看到的/user/org.couchdb.user路径是npm registry兼容CouchDB API的标准路径结构,和CouchDB组织无任何关联,不需要关注该路径的归属问题。

常见报错原因

  • 提前配置的token干扰:npm 6.x版本会优先读取.npmrc中已配置的_authToken进行登录验证,若该token权限不足、已过期或与当前scope不匹配,就会返回401错误,即使你输入的用户名密码正确也不会生效。
  • PAT权限不足:GitHub Packages要求使用的个人访问令牌(PAT)必须同时勾选repo、read:packages、write:packages三个权限,缺少任意一个权限都会触发401。
  • scope归属不匹配:你使用的@mycompanyscope必须和你的GitHub用户名一致,或者是你已加入且拥有Packages读写权限的GitHub组织名,否则会被判定为无权限访问。
  • 命令参数顺序错误:npm 6.x的login命令对参数顺序敏感,--scope参数放在--registry前面时可能不生效,导致请求发送到公共npm registry而非GitHub Packages registry。

解决步骤

  1. 先清理现有冲突配置:删除项目或用户根目录.npmrc文件中已有的//npm.pkg.github.com/:_authToken=SECRET_TOKEN配置行。
  2. 校验PAT权限:确认你使用的PAT已勾选全部要求的权限,如果是组织内的包,还需要确认组织开启了Packages访问权限,你的账号在组织内有对应包的操作权限。
  3. 执行调整顺序后的登录命令:
    npm login --registry=https://npm.pkg.github.com --scope=@mycompany
    登录时用户名填写你的GitHub用户名,密码填写符合权限的PAT,邮箱填写你GitHub账号绑定的公开邮箱。
  4. 验证配置生成:登录成功后检查.npmrc文件会自动生成以下两条配置,确认无其他冲突的registry配置即可:
@mycompany:registry=https://npm.pkg.github.com/
//npm.pkg.github.com/:_authToken=你的PAT值

如果依然报错,可以执行npm config list检查是否有全局registry配置覆盖了项目配置,可在登录命令后加--location=project参数让配置仅对当前项目生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:36:04