多次尝试修复Node Sass 7.0.1与^4.0.0不兼容报错无效
报错核心原因
这个版本不兼容问题和你重装sass、node-sass的操作没有关系,根源是你项目里的react-scripts版本和node-sass版本完全不匹配:你当前安装的react-scripts@2.1.3内置的sass-loader版本仅支持node-sass@^4.0.0,你装的7.0.1版本不在它的兼容范围内,不管怎么反复重装高版本node-sass都绕不过构建工具本身的版本约束。
另外你的package.json里还有两个会干扰依赖安装的错误项:
- 错误将Node运行环境写到了dependencies依赖里,
"node": "^17.7.2"这行完全是多余的 - 安装了名称错误的废弃包
react-script@^2.0.5(比正常包名少了末尾的s),属于冗余无效依赖
推荐修复方案(无兼容问题)
现在官方已经废弃node-sass,推荐使用dart-sass替代,配合新版react-scripts可以彻底解决版本兼容问题,按以下步骤操作:
- 清理本地旧依赖缓存,避免旧版本文件干扰
rm -rf node_modules package-lock.json yarn.lock
- 修改package.json配置:
- 删除dependencies下的
"node": "^17.7.2"、"react-script": "^2.0.5"、"node-sass": "^7.0.1"三个条目 - 添加sass依赖,同时把react-scripts升级到兼容React18的5.0.1版本,修改后的dependencies如下:
- 删除dependencies下的
"dependencies": { "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^13.3.0", "@testing-library/user-event": "^13.5.0", "sass": "^1.54.0", "react": "^18.1.0", "react-dom": "^18.1.0", "react-scripts": "^5.0.1", "web-vitals": "^2.1.4" }
- 顺便把scripts里start命令的
--openssl-legacy-provider参数删掉,react-scripts 5.x已经修复了OpenSSL兼容问题,不需要这个参数,修改后的start命令为:"start": "react-scripts start"
- 重新安装依赖
npm install
- 正常执行启动/构建命令即可,不会再出现版本不兼容报错
npm start
兼容旧版本方案(不升级react-scripts)
如果你因为项目历史原因必须保留react-scripts@2.1.3,就不要安装高版本node-sass,直接把node-sass版本固定为兼容的4.14.1即可:
npm install node-sass@4.14.1 --save-exact
注意:node-sass@4.x最高仅支持Node 14运行环境,如果你当前本地Node版本是15及以上,安装时会出现原生模块编译失败的问题,优先选择上面的升级方案更稳妥。
内容的提问来源于stack exchange,提问作者David Feudale
相关产品推荐
相关产品推荐

