一、问题描述
重装 Node 后,重新启动项目,报错未找到 node-sass 模块 试过各种 npm方法后依然无效,于是放弃安装。
网上常见的解决方法
使用 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
最终解决方法
-
使用
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。