stylelint校验sass文件报block_end类CssSyntaxError错误
报错原因
执行npx stylelint "**/*.sass"抛出Cannot set properties of undefined (setting 'block_end') CssSyntaxError有两个核心诱因:
- 解析器不匹配:stylelint 默认使用的内置解析器仅支持标准CSS、大括号语法的SCSS,无法识别缩进语法的
.sass文件,解析阶段直接崩溃抛出错误。 - 代码缩进不符合Sass语法规则:你的代码中
.settingsPage下嵌套的.tabsNav缩进层级错误,比同层级的样式属性多缩进了2个空格,会被解析器识别为无效嵌套结构,触发解析失败。
修复步骤
- 安装缩进式Sass专属解析器
执行以下命令安装适配.sass语法的PostCSS解析器,供stylelint调用:npm install --save-dev postcss-sass - 调整stylelint配置
在项目根目录的stylelint配置文件(.stylelintrc.json/.stylelintrc.js等)中,为.sass文件指定专属解析器,同时配置统一缩进规则。如果项目同时存在.scss和.sass文件,推荐用覆写配置避免全局解析器冲突,示例如下:
如果项目全是.sass文件,可以直接把{ "extends": ["stylelint-config-standard-scss"], "rules": { "indentation": 2 }, "overrides": [ { "files": ["**/*.sass"], "customSyntax": "postcss-sass" } ] }"customSyntax": "postcss-sass"提至配置根层级,不用写overrides配置。 - 修正代码缩进错误
将.tabsNav的缩进调整为和.settingsPage下的样式属性同级(2空格缩进),.tabsNav下的padding-top属性保持相对父选择器2空格缩进,修正后对应代码段如下:
其余选择器下属性缩进不一致的问题(比如.settingsPage align-content: center background: #f7f9fc display: flex flex-direction: column height: 100vh margin: 0 auto .tabsNav padding-top: 0.title下属性用了4空格缩进、和.headerSection的2空格规则冲突),等解析器正常工作后,stylelint会逐行提示,按规则调整即可。 - 重新执行校验
再次运行npx stylelint "**/*.sass"即可正常完成校验,不会再出现block_end相关的阻塞性语法报错。
内容的提问来源于stack exchange,提问作者Leon Kol
相关产品推荐
相关产品推荐

