node-sass 已经被废弃,dart-sass 是官方推荐的选择,也不会遇到本文的问题 现在 npm 上安装 sass 默认已经是 dart-sass 了 —— 2022-3-29
node-sass#
node-sass 是我們開發中很常見的依賴包,也是安裝時間冗長和最常見到報錯的依賴。無論是自己的專案想要使用還是使用他人的專案進行依賴安裝,運行
npm install
總是會出大大小小的毛病
解決#
遇到問題肯定是找搜索引擎啊,基本檢索 node-sass 就會出現 [失敗,fail] 等關鍵詞聯想 =。= 說明這個問題真的是非常普遍。然後簡單記錄下各種方法還有自己的方法。
這裡是一些前人經驗:#
因為 npm 源速度慢導致的下載失敗#
一般來說都是推薦直接使用 cnpm 下載能夠改善
cnpm install
或者更改源設置更完美,沒有一些隱性 bug 出現。
npm config set registry https://registry.npm.taobao.org
或者可以僅將 node-sass 的下載源更改成淘寶鏡像
npm config set sass-binary-site http://npm.taobao.org/mirrors/node-sass
因為二進制文件源訪問速度慢或無法訪問#
node-sass 除了 npm 部分的代碼,還會下載二進制文件,但是默認源是 github,總所周知,github 國內訪問較慢,特殊時期甚至無法訪問。我們也可以將其改成國內源,直接添加一條環境變量:
set SASS_BINARY_SITE=https://npm.taobao.org/mirrors/node-sass/ && npm install node-sass
或者可以在專案內添加一條.npmrc
文件然後添加
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
這樣使用 npm 安裝 node-sass 時就會去淘寶鏡像下載二進制文件了。
最終解決方法#
最終解決方法!使用梯子並設置代理
npm config set proxy http://127.0.0.1:#你梯子開啟的本地端口#
npm install node-sass
# 下載完成後刪除 http 代理
npm config delete proxy
特殊手段解決#
如果是因為下載失敗的原因,那麼我們可以提前下載到本地,先是查詢系統的版本確定適合哪個版本的二進制文件。
查詢指令如下
node -p "[process.platform, process.arch, process.versions.modules].join('-')"
然後會彈出win32-x64-83
形式的系統版本,然後在下面兩個地址中選擇一個去下載對應系統版本的後綴為 .node 的 node-sass 文件
然後我們需要手動指定 node-sass 二進制文件的下載源為下載的那個文件。
npm config set sass-binary-path 你存放剛才下載的二進制文件的目錄
// 例如 npm config set sass-binary-path e:/web/win32-x64-48_binding.node
然後npm i
應該就完事了,但是這個方法的確定就是無法更新 node-sass 的版本了,建議前面的方法都解決不了再嘗試。