M1芯片运行Symfony项目Node Sass不兼容问题求助
M1芯片Symfony项目Node Sass兼容问题解决方案
- 清理全链路残留文件后重新安装依赖
仅删除node_modules目录无法清除旧依赖残留,需要同步删除锁文件、构建缓存、Symfony缓存,执行命令:
rm -rf node_modules package-lock.json public/build var/cache
清理完成后重新安装依赖即可:
npm install
- 升级低版本的@symfony/webpack-encore
你当前使用的1.6.1版本属于较早的1.x分支,部分旧版encore会隐式绑定node-sass作为可选依赖,即使项目内没有显式安装也会被加载触发报错,执行命令升级到最新稳定版:
npm install @symfony/webpack-encore@latest --save-dev
升级后确认webpack.config.js中的sass加载器配置,新增第三项参数关闭自动检测:
.enableSassLoader((options) => { options.implementation = require('sass'); }, { resolveUrlLoader: false })
- 统一Node.js与依赖的架构
执行命令检查当前Node的运行架构:
node -p process.arch
如果输出为arm64,说明你用的是M1原生版本Node,不要加--target_arch=x64参数安装依赖,避免架构不匹配;如果输出为x64,说明终端是通过Rosetta打开的,所有依赖都统一用x64架构安装即可。
- 卸载全局残留的node-sass
部分全局安装的node-sass会被项目优先调用,执行命令卸载:
npm uninstall -g node-sass
- 调整Node.js版本适配
Node 16早期小版本对M1原生架构的支持存在缺陷,可升级到Node 16最新LTS小版本,或是临时降级到Node 14 LTS版本做兼容。
内容的提问来源于stack exchange,提问作者ArbreMojo
相关产品推荐
相关产品推荐

