教你一招解決node-sass安裝各種坑
解決方法
node-sass 是 ruby 時(shí)代遺留下來的“寶貝”,依賴各種遠(yuǎn)古編譯環(huán)境,如 Python2.7、G++等,而現(xiàn)在我們?cè)偃パb會(huì)碰到各種報(bào)錯(cuò)。
實(shí)際上,我們用 sass 替代 node-sass 即可。dart-sass 兼容 node-sass 的 API,而且安裝過程無需下載二進(jìn)制文件,這樣大家就不需要安裝 node-sass 了。
package.json { "sass": "^1.68.0", }
編譯不會(huì)報(bào)錯(cuò),但是會(huì)有一些過時(shí)寫法的警告。
Deprecation Warning: $weight: Passing a number without unit % (0) is deprecated. To preserve current behavior: $weight * 1% More info: https://sass-lang.com/d/function-units ? 42 │ color: mix($--tag-success-color, $--color-white, $fontColorWeight);
node-sass 安裝過程分析
首先了解一下 node-sass
安裝的過程:
npm
拉下node-sass
包;根據(jù)
node
版本和node-sass
版本拉取對(duì)應(yīng)的binding.node
編譯器,原因是sass
的編譯語言比較特殊,需要下載對(duì)應(yīng)版本的編譯器才能編譯;(node scripts/install.js
階段)如果能拉下
binding.node
就【安裝成功】;如果找不到對(duì)應(yīng)的
binding.node
包,即失敗,然后就會(huì)嘗試本地編譯。
失敗原因分析
一、網(wǎng)絡(luò)不穩(wěn)定
首先要知道的是,安裝 node-sass
時(shí)在 node scripts/install.js
這個(gè)階段會(huì)從 github.com 上下載一個(gè) .node
文件,大部分安裝不成功的原因都源自這里,因?yàn)?GitHub Releases 里的文件都托管在 s3.amazonaws.com
上面,而這個(gè)網(wǎng)址在國內(nèi)總是"網(wǎng)絡(luò)不穩(wěn)定",所以我們需要通過第三方服務(wù)器下載這個(gè)文件。
二、本地編譯沒有Python環(huán)境
三、node-sass版本與當(dāng)前Node版本不匹配
因node版本與node-sass版本不匹配導(dǎo)致 binding.node 拉不下來,無法編譯。
node-sass
版本的兼容性不好,老項(xiàng)目中依賴的 node-sass
很可能已經(jīng)不兼容新的 node
版本,對(duì)應(yīng)版本兼容參考如下官方倉庫
NodeJS | Supported node-sass version | Node Module |
---|---|---|
Node 15 | 5.0+ | 88 |
Node 14 | 4.14+ | 83 |
Node 13 | 4.13+, <5.0 | 79 |
Node 12 | 4.12+ | 72 |
Node 11 | 4.10+, <5.0 | 67 |
Node 10 | 4.9+ | 64 |
Node 8 | 4.5.3+, <5.0 | 57 |
Node <8 | <5.0 | <57 |
比如我在 Node 8 的環(huán)境下安裝 node-sass@3.13.1
, 安裝的時(shí)候就會(huì)出現(xiàn)找不到對(duì)應(yīng)的 binding.node
而報(bào)錯(cuò),如下:
$ npm install --save-dev node-sass > node-sass@3.13.1 install D:\WorkSpace\mumble-next-ng\node_modules\gulp-sass\node_modules\node-sass > node scripts/install.js Downloading binary from http://npm.taobao.org/mirrors/node-sass/v3.13.1/win32-x64-57_binding.node Cannot download "http://npm.taobao.org/mirrors/node-sass/v3.13.1/win32-x64-57_binding.node": HTTP error 404 OK
四、沒有清理緩存
每次裝包失敗報(bào)錯(cuò)后記得都要 npm uninstall xxx
清除裝包錯(cuò)誤留下的緩存。
比如 npm i -D node-sass
報(bào)錯(cuò)了,就要執(zhí)行一遍 npm uninstall node-sass
,然后再重新安裝。
總結(jié)
到此這篇關(guān)于解決node-sass安裝各種坑的文章就介紹到這了,更多相關(guān)node-sass安裝坑解決內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js的特點(diǎn)和應(yīng)用場(chǎng)景介紹
這篇文章主要介紹了Node.js的特點(diǎn)和應(yīng)用場(chǎng)景介紹,本文講解了Node.js的異步I/O、 事件循環(huán)與回調(diào)函數(shù)、單線程、 跨平臺(tái)等特性,然后總結(jié)了它的使用場(chǎng)景,需要的朋友可以參考下2014-11-11Node如何實(shí)現(xiàn)在瀏覽器預(yù)覽項(xiàng)目的所有圖片詳解
最近項(xiàng)目遇到了個(gè)需求,需要將存放圖片進(jìn)行預(yù)覽,所以這篇文章主要給大家介紹了關(guān)于Node如何實(shí)現(xiàn)在瀏覽器預(yù)覽項(xiàng)目的所有圖片的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01