使用compass watch编译SASS代码时出现报错,请教报错原因及解决办法
解决Compass Watch编译SASS时的CSS语法错误问题
嘿,我来帮你捋清楚这个问题!从你给出的错误信息来看,核心问题大概率出在SASS缩进语法的注释规则和老式CSS hack的兼容性上,尤其是你写的; // IE6-9这部分,我之前也踩过类似的坑。
为什么会报错?
- 首先,
.sass后缀的文件用的是缩进式语法,它对格式要求非常严格。//是SASS的单行注释,但你把它直接放在了CSS属性的分号后面,Compass会把这部分当成CSS代码来解析——而标准CSS根本不支持//开头的单行注释(CSS只认/* */这种块注释),所以编译器会判定这里是无效的表达式,直接报错。 - 你说移除
background-color后还是报错?那要么是你引入的其他SASS文件里也有同样的语法问题,要么是Compass的编译缓存没清干净,旧的错误残留下来了。另外还要提一句:你写的颜色值#176b是不合法的,十六进制颜色需要是3位或6位,比如#11776b,这也可能是隐藏的触发因素哦。
具体解决步骤
修正注释和属性语法:
把行尾的; // IE6-9改成符合规则的写法,两种可选:// 写法1:单独一行的SASS注释(推荐,符合缩进语法风格) background-color: #11776b, vertical // IE6-9兼容hack // 写法2:CSS块注释(如果要保留在属性行) background-color: #11776b, vertical /* IE6-9 */另外记得把不合法的颜色值
#176b修正成标准格式,避免额外的语法错误。检查所有引入的文件:
既然当前属性删了还报错,就去排查theme.sass里@import的所有文件,看看有没有同样的注释问题、格式错误,比如多余的分号、缩进不对、属性值不合法之类的。清理编译缓存:
Compass会自动生成.sass-cache文件夹缓存编译结果,有时候旧缓存会导致错误残留。手动删掉这个文件夹,然后重新运行compass watch,让编译器从头解析所有文件。考虑切换到SCSS语法:
如果你习惯用分号、大括号这种接近标准CSS的写法,建议把文件后缀改成.scss,SCSS的语法容错性更高,不容易因为缩进、注释这些细节出问题,和Compass的兼容性也更好。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

