安装GitHub Packages私有npm依赖时报E401未授权错误求助
GitHub Packages NPM安装401未授权问题排查方案
- 检查全局层级的.npmrc配置:你只删除了当前项目的.npmrc,npm还会读取用户目录下的全局.npmrc文件(Linux/macOS路径为
~/.npmrc,Windows路径为C:\Users\你的用户名\.npmrc),确认文件中是否配置了GitHub Packages对应的scope registry规则、关联的授权token是否为你当前有效的可用token,是否存在旧的无效授权配置。 - 核实GitHub个人访问令牌(PAT)的权限和授权范围:
- 确认你用于访问GitHub Packages的PAT已勾选
read:packages权限,若要发布包还需要勾选write:packages - 若你要安装的是企业/组织名下的私有包,需要确认你的PAT已完成对应组织的SSO授权(如果组织开启了SSO登录限制),同时你的账号本身有权限访问目标组织的私有包
- 确认你用于访问GitHub Packages的PAT已勾选
- 检查依赖的scope与registry映射规则:GitHub Packages的私有包都带有
@所有者/包名的scope格式,需确认该scope对应的registry明确指向https://npm.pkg.github.com,没有被全局配置的其他公共镜像源(如npmmirror)覆盖导致请求路由错误。你可以执行npm config list查看所有生效的配置项,确认无冲突的registry配置。 - 排查上层目录的.npmrc文件:npm会从当前执行命令的目录开始,向上逐层遍历查找所有.npmrc文件并合并配置,若当前项目的上层目录存在未清理的.npmrc文件,也会导致异常配置生效。
- 验证token的生效状态:你可以直接用token发起接口请求测试有效性,执行
curl -H "Authorization: token 你的PAT" https://npm.pkg.github.com/@目标包所有者/目标包名,如果返回401说明token本身无效或者权限不足,返回包信息则说明token正常,问题出在npm的配置路由上。
内容的提问来源于stack exchange,提问作者Sam Rothstein
相关产品推荐
相关产品推荐

