升级Node.js至18后Yarn构建失败,node_sass相关问题求助
解决Node.js 18升级后@rails/webpacker的node-sass构建错误
核心问题
你遇到的问题是@rails/webpacker内部依赖的node-sass版本与Node.js 18不兼容——只有node-sass v8.x及以上版本支持Node.js 18,但旧版本的webpacker可能绑定了更低版本的node-sass,即便你在自身package.json中指定了v8,也会被子依赖覆盖。
解决步骤
1. 强制所有依赖使用node-sass v8.x
利用yarn的resolutions字段锁定整个依赖树中的node-sass版本,包括@rails/webpacker引入的子依赖:
- 在你的
package.json中添加以下配置:{ // 保留原有字段... "resolutions": { "node-sass": "^8.0.0" } } - 清理旧依赖并重新安装:
rm -rf node_modules yarn.lock yarn install
2. 升级@rails/webpacker到兼容版本
如果上述方法无效,可能是@rails/webpacker本身不支持Node.js 18,建议升级到最新稳定版:
yarn upgrade @rails/webpacker --latest
升级后重复清理依赖的操作。
3. 替换node-sass为sass(长期推荐方案)
node-sass已被官方废弃,后续不再维护,建议直接迁移到dart-sass(npm包名为sass),兼容性更好且无需绑定Node版本:
- 卸载node-sass:
yarn remove node-sass - 安装sass:
yarn add sass --dev - 多数情况下webpacker会自动适配sass,若有自定义webpack配置,只需将配置中引用
node-sass的部分替换为sass即可。
内容的提问来源于stack exchange,提问作者SlugLord
相关产品推荐
相关产品推荐

