WSL2 安装 npm 踩坑记录(各种 errno ECONNREFUSED、errno ETIMEDOUT 问题)
事情起因
- 搭建 blog 需要,我是走 hexo + github 路线
- 安装 hexo 要先安装 nodejs 和 npm,结果卡在安装 npm 不断踩坑
坑点一:官方路线
-
紧接着会跳转微软官网,微软推荐用 nodejs 版本管理器 nvm 安装
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- 我试着跟着操作但总是报错
curl (7) error
遂放弃
坑点二:网上流传较多的 WSL 包管理器先安装再更新法
PART I: 安装 nodejs 和 npm
- 参考 WSL Ubuntu 安装 nodejs 和 cnpm 和 玩转WSL(7)之nodejs环境配置
- 由于 WSL apt包管理器直接安装版本过时,所以通过以下这个 Github 项目 来安装指定的版本
- 目前微软商城最新版本可找到 Ubuntu 20.x,而当前时间节点是
2022-02-17
,最新版本 nodejs 是 v17.x(最新稳定版本 v16.x),所以我选择了 v17.x ,输入以下命令
curl -fsSL https://deb.nodesource.com/setup_17.x | sudo -E bash - #安装nodejs
sudo apt install -y nodejs
sudo npm cache clean -f #清理缓存模块
sudo npm install -g n #使用 n模块 管理 nodejs 版本
目前为止都比较顺利,通过查看版本号验证 nodejs 和 npm 安装是否成功
node -v # v17.5.0
npm -v # v8.4.1
但紧跟着安装 hexo 就爆大炸了,error ECONNREFUSED
就如老朋友一样亲切
看提示我以为是代理的问题
PART II: 处理代理(其实是个坑点,不用处理,我只是记录下来)
先给大家介绍下背景
-
第一,dns 设置(控制面板->网络和共享中心->更改适配器设置(左栏)->当前网卡右击属性->双击 ipv4)
-
第二,本地代理的设置(右击开始->设置->网络和 Internet->代理)
- 第三,hosts 文件(WSL 终端下,输入
vi /etc/hosts
)
背景介绍完,之后就开始踩坑了(请不要跟着做!!!)
-
Step 1,设置全局代理(这些代理地址及端口上面已经查出来了)
-
Step 2,设置 npm 代理(首先了解到国内
npm install
速度很慢,所以大部分资料推荐更换注册点为阿里set registry https://...
;其次是现在网上大部分资料给出的registry
快过时了,参考 npm 更换域名通知,其实你也可以通过 configure 提示信息发现就算用旧域名进去也会重定向到新域名)
-
Step 3,安装 cnpm,上一点说过国内访问 npm 太慢,所以大部分教程会给出一个叫 cnpm 的东西,通过他安装能快很多(然而对于我无效,还见到了老朋友)
至此,我开始吃不下饭睡不着觉,因为无论我怎么改代理(设为 null 或设为 localhost 、或者更改端口等等)总能遇到我们的老朋友 error ECONNREFUSED
完结篇
-
在我不懈努力下,终于找到一篇较有参考意义的 post——npm ERR! Error blabla
-
我也试着为我们的 registry 显示添加一个 resolved addr
-
第一步,找到这个 ip
-
第二步,添加到
/etc/hosts
-
第三步,清空所有代理
# 清空 npm 代理
npm config set proxy null
npm config set https-proxy null
npm config delete proxy
npm config delete https-proxy
# 清空全局代理
unset http_proxy https_proxy
# 验证
npm config list
env | grep -I proxy
- 第四步,验证 hexo 是否安装成功直接输入
hexo
即可
至此,终于迈过了 WSL 安装 hexo 的一步