WSL2 下,npm install 使用淘宝源 npmmirror 超时问题的解决方法

DebugMi 发布于 2023-03-19编辑于 2023-04-03阅读:11

2023年初,在 WSL2 下,pnpm install 时(npm 也一样),会概率性的出现 timeout 问题,导致安装失败,多次尝试却可以偶尔成功。由淘宝源(https://registry.npmmirror.com)换成腾讯源(https://mirrors.cloud.tencent.com/npm/)之后,一切正常,怀疑是淘宝源有问题,网上找遍,没有任何解决方法

转眼来到 2023 年 3 月,以为这个问题淘宝源已经解决了,把腾讯源换成淘宝源之后,发现还是一样,而且网上还是没有任何相关讨论,非常奇怪,决定花时间查一下

先用 pnpm i --reporter=ndjson 看看安装出了什么问题,发现一直卡在下载这个包: https://registry.npmmirror.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz ,然后用 curl 看看情况

curl -v curl -v https://registry.npmmirror.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz

输出

...
(2404:6800:4001:c01::69) network is unreachable
...

感觉是 ipv6 的问题,查了一下 WSL2 关闭 ipv6 的方法,在 win 下,新建 ~/.wslconfig 文件

[wsl2]
kernelCommandLine=ipv6.disable=1

然后在 win 下重启 WSL2

# 先关闭再启动
wsl --shutdown
wsl

如果不想重启,也可以用命令手动开启和关闭 ipv6

# 关闭
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1

# 开启
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0

完美解决,又可以愉快的用上淘宝源了

0