Macbook Air M1下Angular项目因/deep/选择器构建失败求助
Angular M1设备构建时/deep/选择器报错解决方案
问题场景
在Macbook Air M1设备上构建企业Angular项目时出现以下报错:
/deep/ nb-card.popover-card { ^ Expected selector. ╷ 400 │ /deep/ nb-card.popover-card{ │ ^ ╵
Windows环境构建正常,已核对Node、Angular、node-sass版本,重装node_modules后问题仍存在,且无法修改项目代码。
解决办法
- 用Rosetta 2转译终端运行:打开访达→应用程序→实用工具→终端,右键选择「显示简介」,勾选「使用Rosetta打开」,重启终端后重新执行构建命令。M1的ARM架构对部分旧版sass依赖支持不佳,转译x86架构可兼容这类依赖。
- 强制安装x86架构的node-sass:执行命令
npm install node-sass --arch=x64 --platform=darwin,指定安装适配x86的版本,绕开ARM架构下的语法解析问题。 - 切换到与Windows环境一致的Node稳定版:用nvm(Node版本管理器)安装并切换到项目适配的Node版本,比如
nvm install 14.18.1 && nvm use 14.18.1,新版本Node在ARM架构下可能和旧Angular项目的预处理器存在兼容性问题。 - 彻底清理缓存后重装依赖:执行
npm cache clean --force,删除node_modules和package-lock.json文件,再重新执行npm install,避免缓存中的ARM架构依赖残留。
内容的提问来源于stack exchange,提问作者jonathan_OJ
相关产品推荐
相关产品推荐

