pnpm 下载依赖更换源不生效
# 背景
今天下载依赖的时候,突然报错 WARN GET https://registry.npm.taobao.org/cz-conventional-changelog error (CERT_HAS_EXPIRED).
,查阅信息以后发现是淘宝源的域名过期了。
后来就尝试更换域名进行下载包。发现不论是 CLI 更改,还是项目中的 .npmrc 更改都不生效。
纠结一天终于找到了原因。
# 复现场景
本地设置淘宝源, 项目设置私有仓库(下载私有包需要)。
- pnpm 下载所有依赖
- 域名过期后尝试多重换源方式。
- 本地换源。
- 项目换源。
- 指定临时源。
众所周知,npm 下包取源的规则是 临时 => 项目 => 用户 => 全局
。
但是在实际使用过程中有一个非常诡异的 case ,就是我本地项目注释源配置。 此时不论是采用临时指定源,还是使用某人源下载包均失败。 如图所示:
# 结论
经过验证,发现 pnpm 会记录首次下载依赖的源配置,在 add 新依赖的时候,它会对旧依赖从旧源里进行比对(这里是推测)。当项目里没有配置源的时候,它就采用了它记录的默认源地址。 这时候因为淘宝源的域名问题,导致访问失败。从而没办法下载新包。
# 解决方式
- 配置正确的源地址,私有包链接私有仓库,三方包走能用的镜像源站。
rm -rf node_moduls
pnpm install
编辑 (opens new window)
上次更新: 2024/01/23, 16:34:42