node-sass 依赖包无法安装的解决方法
1 问题描述
-
重装 Node 后,重新启动项目,报错未找到
node-sass
模块 -
试过各种
npm
方法后依然无效,于是放弃安装
2 网上常见的解决方法
-
使用
cnpm
:cnpm install node-sass --save
(失败) -
指定镜像源:
npm i node-sass --save --sass_binary_site=https://npm.taobao.org/mirrors/node-sass
(失败) -
将依赖下载到本地,然后赋值到项目
node-modules
目录(未尝试)
3 最终解决方法
-
使用
dart-sass
模块替代node-sass
-
命令行输入如下命令,安装
dart-sass
模块并重命名为node-sass
npm install node-sass@npm:dart-sass
4 分析原因
-
原因一: npm源速度慢
- 国内网络环境,从国内安装官方源的依赖包会很慢,
- 解决方法是使用
cnpm
-
原因二: binding.node源无法访问或速度慢
- node-sass除了npm部分的代码,还会下载二进制文件binding.node,默认源是github,国内访问较慢,特殊时期甚至无法访问。
- 解决方法是使用国内源,可通过.npmrc文件设置
-
原因三: node版本与node-sass版本不兼容
- node-sass版本兼容性并不好,老项目中依赖的node-sass很可能已经不兼容新的node
-
原因四: 缓存中binding.node版本不一致
- 本地node版本改了,或在不同机器上运行,node版本不一致
- 按提示
npm rebuild node-sass
或清除缓存重新安装即可
-
注:node-sass会尝试在本地编译binding.node,该过程就需要python