Apple M1芯片MacOS 11.6运行Rails项目报Node Sass不支持arm64错误
问题根因
你遇到的报错本质是node-sass本身的兼容性问题:
- node-sass官方已完全停止维护,原生二进制包不支持Apple M1的arm64架构
- Node 17对应的runtime版本为102,没有任何版本的node-sass提供对应支持
- 你尝试安装的node-sass@4.14.1最高仅兼容Node 14,和你的环境完全不匹配
之前运行正常大概率是你此前通过Rosetta 2模式运行终端,或近期清理了node_modules、包缓存触发了重新编译拉取。
解决方案
优先推荐第一个方案,无兼容性隐患,改动量最小:
方案1:替换为官方推荐的dart-sass(完全兼容node-sass语法)
dart-sass为纯JS实现,无原生绑定依赖,天然兼容M1架构和所有主流Node版本,是sass官方指定的node-sass替代方案,无需修改业务代码:
- 卸载原有node-sass
yarn remove node-sass - 安装dart-sass(npm包名已统一为
sass)yarn add sass -D - 重启Rails本地服务即可正常运行
方案2:通过Rosetta 2兼容模式运行终端
仅适合临时需要保留node-sass的场景:
- 退出当前终端,在启动台找到「终端」应用,右键点击选择「显示简介」
- 勾选「使用Rosetta打开」,重启终端
- 在项目目录执行
yarn install重新安装依赖,重启服务即可
方案3:切换到node-sass支持的Node版本
如果你的项目强制依赖node-sass,可将Node版本降到16及以下:
- 用nvm安装兼容版本Node
nvm install 16 - 切换到对应版本
nvm use 16 - 重新安装项目依赖,重启服务即可
内容的提问来源于stack exchange,提问作者Jason FB
相关产品推荐
相关产品推荐

