M1芯片设备运行stencil start报CSS主引擎编译错误,同项目其他设备正常
故障根因
你遇到的报错是M1芯片Mac设备上Stencil CLI依赖的Sass编译引擎版本差异导致的:
- 旧Intel架构设备上的Stencil CLI默认使用低版本node-sass/低版本dart-sass作为编译引擎,该版本对顶层使用
&父选择器的写法容错度较高,不会抛出语法错误 - 新M1芯片设备安装Stencil CLI时会自动拉取适配ARM架构的高版本dart-sass作为主编译引擎,该版本严格禁止顶层使用
&选择器,因此会触发编译校验失败,回退到备用引擎的过程就会导致项目随机重载。
解决方案
你可以任选以下一种方法解决问题:
- 修复代码语法问题:打开
dh-custom/dh-global.scss文件,找到第36行的&::placeholder代码,将其嵌套到对应的父选择器内部即可。如果是需要给全局元素设置占位符样式,可以用通配符嵌套:
* { &::placeholder { // 保留原有的样式逻辑即可 } }
- 强制使用旧版编译引擎:无需修改业务代码,在项目的Stencil配置文件中指定Sass编译工具为node-sass,同时给项目安装适配当前Node版本的node-sass依赖即可。
- M1设备适配补充:若安装node-sass时出现编译失败,可通过Rosetta打开终端后再执行安装命令,或直接安装适配ARM架构的node-sass版本。
内容的提问来源于stack exchange,提问作者T-McVee
相关产品推荐
相关产品推荐

