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 -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就如老朋友一樣親切
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 的一步


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM