如何解决GitHub npm registry私有包安装时公共包404报错问题
报错根因
该报错是因为npm配置将所有包的下载源默认指向了GitHub npm Registry,但GitHub Registry仅托管你上传的私有包,不会同步npm官方的公共开源包,因此请求公共包axios时返回404。
解决方案
方法一:配置scope关联私有源(推荐)
GitHub要求托管的私有包必须带有指定的个人/组织scope,仅将对应scope的包源指向GitHub,其余公共包默认走公共源即可,完全不会出现源冲突问题。
- 在项目根目录新建/编辑
.npmrc文件,添加如下配置:
# 替换@你的scope为私有包包名@后的前缀,例如私有包名为@demo/utils就填@demo @你的scope:registry=https://npm.pkg.github.com //npm.pkg.github.com/:_authToken=你的GitHub个人访问令牌 # 公共包走官方npm源,也可替换为国内镜像源 registry=https://registry.npmjs.org/
- 确认私有包
package.json的name字段为@你的scope/包名格式,scope填写正确。
方法二:单独指定公共包源(仅临时验证用)
如果因特殊场景必须全局设置registry为GitHub源,可单独给找不到的公共包指定官方源,该方案维护成本高,不建议长期使用。
在.npmrc中添加对应规则即可:
axios:registry=https://registry.npmjs.org/
验证生效
修改配置后执行如下命令重新安装依赖即可:
npm cache clean --force rm -rf node_modules package-lock.json npm install
排查注意事项
- 确认GitHub个人访问令牌拥有对应scope私有包的读取权限,权限不足也可能返回404
- 确认私有包依赖声明中axios的版本号填写正确,
axios@0.21.1确实存在于官方npm源 - 不要全局将npm registry设置为
https://npm.pkg.github.com,会导致所有公共包请求都走GitHub源
内容的提问来源于stack exchange,提问作者BeHappy
相关产品推荐
相关产品推荐

