Mac M1执行yarn install时node-sass构建报Python语法错误求助
根本原因
报错由三个适配冲突共同触发:
- 项目依赖的
node-gyp@3.8.0仅支持Python2,系统默认调用的Python3.9不兼容旧语法,直接触发语法报错 - M1 ARM架构对低版本
node-sass的原生编译逻辑支持差 - 环境同时存在Node14、Node16两个版本,版本漂移进一步加剧了依赖适配冲突
修复步骤
- 统一Node版本:先确认项目要求的Node runtime版本,通过brew link或者nvm固定对应版本,避免版本混用。如果项目无强制要求,优先使用Node14,低版本
node-sass对Node16的适配度更低。 - 匹配Python版本:
- 通过brew安装
python@2.7,完成后执行npm config set python 【你的Python2.7实际安装路径】,给node-gyp指定兼容的Python版本 - 也可以临时指定Python版本执行安装:
PYTHON=python2.7 yarn install
- 通过brew安装
- 解决M1架构适配问题:
优先方案:将项目依赖中的node-sass替换为sass,该库为纯JS实现的sass编译工具,语法完全兼容node-sass,无原生编译依赖,可彻底解决此类编译报错。
若必须保留node-sass:执行arch -x86_64 zsh切换到Rosetta2转译模式,再执行安装命令,用x86兼容模式运行原生编译流程。 - 兜底验证:如果上述操作后仍报错,先删除项目下的
node_modules文件夹、yarn.lock文件,执行yarn cache clean清空缓存后再重新执行安装。
内容的提问来源于stack exchange,提问作者Marius
相关产品推荐
相关产品推荐

