pnpm拉取GitHub Packages私有包出现401授权错误该如何解决?
问题根因
该问题是pnpm和npm的.npmrc授权匹配逻辑差异导致:
npm会自动识别同域名下的registry并复用对应授权token,pnpm则要求授权配置的路径前缀和registry的完整路径完全匹配才能生效。你当前配置的@1uphealth scope对应的registry路径为https://npm.pkg.github.com/1uphealth,但仅配置了根路径//npm.pkg.github.com/的授权token,pnpm判定该token不匹配当前请求的registry路径,因此请求时不会携带授权头,触发401错误。
另外你配置中的//npmjs.org=true属于无效配置,不会对当前问题产生影响,但建议删除避免后续干扰。
解决方案
以下两种方案二选一即可:
- 调整scope对应的registry配置
将.npmrc中的@1uphealth:registry=https://npm.pkg.github.com/1uphealth修改为@1uphealth:registry=https://npm.pkg.github.com/,GitHub Packages本身不需要在registry后缀加组织名,修改后原有根路径的授权token即可正常匹配生效。 - 补充对应完整路径的授权配置
保留原有registry配置不变,在.npmrc中新增一行授权配置:
新增后pnpm可以匹配到完整registry路径对应的token,请求时即可正常携带授权头。//npm.pkg.github.com/1uphealth:_authToken=XXXXXXX
内容的提问来源于stack exchange,提问作者Marvin
相关产品推荐
相关产品推荐

