WSL2 安装 npm 踩坑记录(各种 errno ECONNREFUSED、errno ETIMEDOUT 问题)

2022/2/17 23:17:59

本文主要是介绍WSL2 安装 npm 踩坑记录(各种 errno ECONNREFUSED、errno ETIMEDOUT 问题),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

事情起因

  • 搭建 blog 需要,我是走 hexo + github 路线
  • 安装 hexo 要先安装 nodejs 和 npm,结果卡在安装 npm 不断踩坑

坑点一:官方路线

  • nodejs 官网

  • WSL 见最底行

  • 紧接着会跳转微软官网,微软推荐用 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 -sL https://deb.nodesource.com/setup_16.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就如老朋友一样亲切
error ETIMEDOUT

error ECONNREFUSED

看提示我以为是代理的问题
err! proxy

PART II: 处理代理(其实是个坑点,不用处理,我只是记录下来)

先给大家介绍下背景

  • 第一,dns 设置(控制面板->网络和共享中心->更改适配器设置(左栏)->当前网卡右击属性->双击 ipv4)
    ipv4 dns

  • 第二,本地代理的设置(右击开始->设置->网络和 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 的一步



这篇关于WSL2 安装 npm 踩坑记录(各种 errno ECONNREFUSED、errno ETIMEDOUT 问题)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程