Netlify从Github部署执行CI= npm run build时node-sass构建报错
问题结论
是的,本次报错完全由node-sass依赖版本与Netlify构建环境的Node版本不兼容导致。
报错原因
从你提供的日志和配置可以直接定位到问题根源:
- Netlify构建环境使用的Node版本为
v16.8.0 - 你项目中安装的
node-sass@5.0.0仅支持Node 10、12、14、15版本,完全不兼容Node 16,依赖安装阶段node-gyp编译二进制包失败,直接触发非零退出码终止构建。
另外你当前的操作流程存在冗余:本地执行build后推送build文件夹到远端仓库是不必要的操作,Netlify会自动拉取源码执行构建流程生成站点产物。
解决方案
你可以任选以下一种方案修复问题:
方案1(推荐):替换node-sass为官方推荐的dart-sass
dart-sass完全兼容node-sass的语法,不需要修改任何业务代码,也不存在版本兼容问题:
- 卸载旧依赖:
npm uninstall node-sass - 安装新依赖:
npm install sass --save - 提交代码到Github重新触发Netlify部署即可
方案2:指定Netlify使用兼容node-sass@5的Node版本
如果你不想替换依赖,可以将Netlify的Node版本锁定为14.x版本:
- 在项目根目录新建
.nvmrc文件,文件内容写入14.20.0(任意14.x稳定版本均可) - 提交该文件到远端仓库,Netlify会自动识别并使用对应版本的Node执行构建
- 你也可以直接在Netlify控制台的项目环境变量配置中,新增
NODE_VERSION变量,值设为14,效果完全一致
优化建议
把build文件夹加入项目的.gitignore文件,不需要推送到远端仓库,减少仓库体积的同时也不会和Netlify自动构建的产物冲突。
内容的提问来源于stack exchange,提问作者Hithesh kumar
相关产品推荐
相关产品推荐

