解決方法
node-sass 是 ruby 時代遺留下來的“寶貝”,依賴各種遠古編譯環(huán)境,如 Python2.7、G++等,而現(xiàn)在我們再去裝會碰到各種報錯。
實際上,我們用 sass 替代 node-sass 即可。dart-sass 兼容 node-sass 的 API,而且安裝過程無需下載二進制文件,這樣大家就不需要安裝 node-sass 了。
package.json
{
"sass": "^1.68.0",
}
編譯不會報錯,但是會有一些過時寫法的警告。
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
包; -
根據
node
版本和node-sass
版本拉取對應的binding.node
編譯器,原因是sass
的編譯語言比較特殊,需要下載對應版本的編譯器才能編譯;(node scripts/install.js
階段) -
如果能拉下
binding.node
就【安裝成功】;如果找不到對應的
binding.node
包,即失敗,然后就會嘗試本地編譯。
失敗原因分析
一、網絡不穩(wěn)定
首先要知道的是,安裝 node-sass
時在 node scripts/install.js
這個階段會從 github.com 上下載一個 .node
文件,大部分安裝不成功的原因都源自這里,因為 GitHub Releases 里的文件都托管在 s3.amazonaws.com
上面,而這個網址在國內總是"網絡不穩(wěn)定",所以我們需要通過第三方服務器下載這個文件。
二、本地編譯沒有Python環(huán)境
三、node-sass版本與當前Node版本不匹配
因node版本與node-sass版本不匹配導致 binding.node
拉不下來,無法編譯。
node-sass
版本的兼容性不好,老項目中依賴的 node-sass
很可能已經不兼容新的 node
版本,對應版本兼容參考如下官方倉庫https://link.juejin.cn?target=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2Fnode-sass
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
, 安裝的時候就會出現(xiàn)找不到對應的 binding.node
而報錯,如下:
$ 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
四、沒有清理緩存
每次裝包失敗報錯后記得都要 npm uninstall xxx
清除裝包錯誤留下的緩存。文章來源:http://www.zghlxwxcb.cn/news/detail-766834.html
比如 npm i -D node-sass
報錯了,就要執(zhí)行一遍 npm uninstall node-sass
,然后再重新安裝。文章來源地址http://www.zghlxwxcb.cn/news/detail-766834.html
到了這里,關于node-sass 安裝各種坑,一招解決!的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!