有些老项目在执行 npm install 时,经常会卡在 node-sass 上,尤其是 Windows 环境。
如果你的项目暂时还不能升级依赖,这里提供一种比较直接的处理办法。
一、为什么会报错
node-sass 对 Node 版本和本地二进制文件依赖比较强。
常见现象包括:
- 安装时卡在下载二进制文件
- 提示缺少
binding.node - Node 版本和
node-sass版本不匹配
如果你的项目使用的是 Node 16,对应可以先检查 node-sass 是否需要 win32-x64-93_binding.node。
二、手工下载对应二进制文件
下载地址:
Node 16 常见可用文件:
建议把这个文件放到一个固定目录,例如:
vbnet
D:\lib\win32-x64-93_binding.node
三、在 .npmrc 中指定本地路径
在项目根目录或者用户目录的 .npmrc 中增加:
ini
sass_binary_path=D:/lib/win32-x64-93_binding.node
路径建议使用正斜杠,避免某些场景下转义带来的问题。
四、重新安装依赖
先执行:
npm rebuild node-sass
如果还不行,再尝试重新安装:
npm install
如果此前缓存了错误结果,可以再清一次缓存:
css
npm cache clean --force
五、补充建议
这类方案适合:
- 老项目短期内必须跑起来
- 暂时不能迁移前端构建链路
- 团队里大家都在 Windows 环境复现同一个问题
如果项目允许长期治理,更推荐逐步从 node-sass 迁移到 sass,因为前者在很多老项目里已经成为安装稳定性的主要来源之一。
六、总结
如果你只是想尽快把项目装起来,最直接的路径就是三步:
- 下载匹配 Node 版本的
binding.node - 在
.npmrc中指定sass_binary_path - 重新执行
npm rebuild node-sass或npm install
七、附录
| Node版本 | ABI | 文件名 |
|---|---|---|
| Node 8 | 57 | win32-x64-57_binding.node |
| Node 10 | 64 | win32-x64-64_binding.node |
| Node 12 | 72 | win32-x64-72_binding.node |
| Node 14 | 83 | win32-x64-83_binding.node |
| Node 15 | 88 | win32-x64-88_binding.node |
| Node 16 | 93 | win32-x64-93_binding.node |
| Node 17 | 102 | win32-x64-102_binding.node |
| Node 18 | 108 | win32-x64-108_binding.node |
| Node 19 | 111 | win32-x64-111_binding.node |
| Node 20 | 115 | win32-x64-115_binding.node |