StyleLint 报错 “Expected newline after {” 到底怎么解决? UE丶艺馨 提问于 2026-02-25 09:42:19 阅读 20 前端 我在写 CSS 的时候,StyleLint 一直报错说“Expected newline after {”,但我明明已经换行了啊! 我的规则是用的 standard 配置,试过在花括号后面加空格、删空格都不行。下面是我写的代码: .button { color: red; } 这看起来完全正常,为什么还会报这个错?是不是配置哪里有问题? 代码规范 我来解答 赞 8 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 UX-梦媛 Lv1 这破问题我也遇到过,standard配置确实有点矫情。你的代码看着没问题,但可能配置里还套了别的规则。 直接用这个修复方案: 1. 确认你的.stylelintrc文件里有这个配置: { "rules": { "block-opening-brace-newline-after": "always" } } 2. 如果还不行,试试把文件格式改成这样(注意花括号后必须换行): .button { color: red; } standard配置有时候会和其他规则打架,实在不行就关掉这个检查: { "rules": { "block-opening-brace-newline-after": null } } 妈的,这些lint工具有时候真的烦,明明代码能跑非要纠结格式。 回复 点赞 1 2026-03-09 14:19 ❤恒博 Lv1 根本原因是 StyleLint 的 stylelint-config-standard 里默认开启了 block-opening-brace-space-after 这个规则,它要求花括号后面必须有换行符,但你写的代码里花括号后面紧跟着的是换行符,问题出在换行符的类型上。 很多编辑器(特别是 Windows 上的 VS Code 或记事本)默认用的是 CRLF(回车+换行,即 rn),而 StyleLint(以及绝大多数前端工具链)统一要求用 LF(换行符,n)。虽然肉眼看不出来区别,但 StyleLint 的解析器是严格按字节检测的,CRLF 会被识别成“花括号后面不是换行符”,而是“花括号后面是回车符再加换行符”,所以报错。 你可以用 VS Code 右下角的状态栏看看当前文件的行尾符是不是 CRLF,如果是,点一下改成 LF,再保存文件试试。或者用 file 命令(Linux/macOS)或者 hexdump -C 看文件的十六进制内容,确认是不是 rn。 如果想一劳永逸解决,可以在 .stylelintrc 里显式配置: { "extends": "stylelint-config-standard", "rules": { "block-opening-brace-space-after": "always-single-line" } } 不过更推荐的做法是全局统一换行符为 LF,因为除了 StyleLint,Git、ESLint、Prettier 这些工具也都默认用 LF。可以在 .editorconfig 里加一句: [*] end_of_line = lf 或者在 VS Code 里设置 Files: Eol 为 n,然后批量替换整个项目里的换行符(可以用 sed -i 's/r$//' **/*.css 这种命令批量处理,不过记得先备份)。 另外提醒一句,如果你用的是 Prettier,它会自动统一换行符,但有时候 Prettier 和 StyleLint 的规则冲突也会导致这种诡异报错,所以最好保证它们的配置方向一致,比如都用 LF,都要求花括号后换行。我之前就踩过坑,Prettier 改了换行符但没重新保存,StyleLint 还在用旧缓存,报了一堆奇怪的错,重启编辑器才好。 回复 点赞 2 2026-02-25 10:03 加载更多 相关推荐 2 回答 107 浏览 stylelint为什么检测不到PostCSS自定义属性的拼写错误? 我在用PostCSS处理CSS变量时遇到问题,stylelint没有报错但明显变量名拼写错了。比如下面这段代码: <style> :root { --main-color: #ff6b6b... IT人子萱 工具 2026-02-08 07:10:23 2 回答 33 浏览 StyleLint配置了缩进规则但无效怎么办? 我在项目里配置了stylelint的缩进规则,设置成2个空格,但保存CSS文件时完全没反应,代码没报错也不自动修复。之前按文档写过: { "rules": { "indentation": [2, {... Air-米阳 前端 2026-02-06 12:18:41 2 回答 90 浏览 为什么用Vite导入JSON文件时报“Unexpected token”错误? 在Vue组件里用import引入本地JSON文件时突然报错,提示“Unexpected token {”。之前正常运行过,今天改了数据结构就崩了…… 代码是这样的:<script setup&g... 司马瑞玲 工具 2026-01-26 14:44:31 2 回答 38 浏览 StyleLint如何配置忽略node_modules和特定文件夹的检查? 我在项目里用了StyleLint做CSS检查,但每次运行都会报node_modules和dist目录的错误。试过在配置文件里加"ignoreFiles": ["node_modules/**"],但还... 卓尚 Dev 前端 2026-02-18 22:14:27 2 回答 11 浏览 ESLint 报错说不支持可选链操作符,是不是解析器没配对? 我在项目里用了可选链(?.)语法,但 ESLint 一直报错说 Unexpected token,明明我的 Node 和浏览器都支持啊。是不是 ESLint 的 parser 没设对? 我试过加 pa... 综敏 工具 2026-03-10 15:49:16 1 回答 16 浏览 SWC 编译 React 时为啥不识别 JSX 语法? 我用 SWC 替换 Babel 做构建,但一写 JSX 就报错,说 Unexpected token。明明装了 @swc/core 和 @swc/cli,也配了 .swcrc,但还是不行。 这是我的组... 司徒光磊 前端 2026-03-05 14:54:23 2 回答 81 浏览 PostCSS Parser解析时如何处理注释导致的语法错误? 我在用postcss.parse解析包含CSS注释的字符串时,总报错“Unexpected '/' on line 2”,但注释明明写对了。比如: const css = '/* 这是注释n未闭合的注... 公孙香利 工具 2026-01-30 12:33:28 1 回答 35 浏览 DLL入口文件引用CSS时出现‘Unexpected token’错误怎么办? 我在用webpack的DllPlugin打包常用库时,入口文件里引用了一个CSS文件:.box { border: 1px solid red; }但构建时提示“Unexpected token ‘.... Mr.建利 优化 2026-02-17 13:13:44 2 回答 63 浏览 ESLint插件配置后为什么还是报“Unexpected token”错误? 在项目里装了eslint-plugin-react和@typescript-eslint/eslint-plugin,配置了相关规则,但写React组件时还是报“Unexpected token”错误... Code°亚楠 工具 2026-02-06 07:37:28 2 回答 60 浏览 Angular组件中ngAfterViewInit为什么无法获取动态生成的DOM元素? 我在使用Angular时遇到了奇怪的问题。组件里通过ViewChild获取一个动态生成的DOM元素,但ngAfterViewInit里始终返回null。元素是通过*ngIf条件渲染的,当数据异步加载完... 纪娜 ☘︎ 框架 2026-02-04 17:07:27
直接用这个修复方案:
1. 确认你的.stylelintrc文件里有这个配置:
2. 如果还不行,试试把文件格式改成这样(注意花括号后必须换行):
standard配置有时候会和其他规则打架,实在不行就关掉这个检查:
妈的,这些lint工具有时候真的烦,明明代码能跑非要纠结格式。
stylelint-config-standard里默认开启了block-opening-brace-space-after这个规则,它要求花括号后面必须有换行符,但你写的代码里花括号后面紧跟着的是换行符,问题出在换行符的类型上。很多编辑器(特别是 Windows 上的 VS Code 或记事本)默认用的是 CRLF(回车+换行,即
rn),而 StyleLint(以及绝大多数前端工具链)统一要求用 LF(换行符,n)。虽然肉眼看不出来区别,但 StyleLint 的解析器是严格按字节检测的,CRLF 会被识别成“花括号后面不是换行符”,而是“花括号后面是回车符再加换行符”,所以报错。你可以用 VS Code 右下角的状态栏看看当前文件的行尾符是不是
CRLF,如果是,点一下改成LF,再保存文件试试。或者用file命令(Linux/macOS)或者hexdump -C看文件的十六进制内容,确认是不是rn。如果想一劳永逸解决,可以在
.stylelintrc里显式配置:不过更推荐的做法是全局统一换行符为 LF,因为除了 StyleLint,Git、ESLint、Prettier 这些工具也都默认用 LF。可以在
.editorconfig里加一句:或者在 VS Code 里设置
Files: Eol为n,然后批量替换整个项目里的换行符(可以用sed -i 's/r$//' **/*.css这种命令批量处理,不过记得先备份)。另外提醒一句,如果你用的是 Prettier,它会自动统一换行符,但有时候 Prettier 和 StyleLint 的规则冲突也会导致这种诡异报错,所以最好保证它们的配置方向一致,比如都用 LF,都要求花括号后换行。我之前就踩过坑,Prettier 改了换行符但没重新保存,StyleLint 还在用旧缓存,报了一堆奇怪的错,重启编辑器才好。