StyleLint 报错 “Expected newline after {” 到底怎么解决? UE丶艺馨 提问于 2026-02-25 09:42:19 阅读 39 前端 我在写 CSS 的时候,StyleLint 一直报错说“Expected newline after {”,但我明明已经换行了啊! 我的规则是用的 standard 配置,试过在花括号后面加空格、删空格都不行。下面是我写的代码: .button { color: red; } 这看起来完全正常,为什么还会报这个错?是不是配置哪里有问题? 代码规范 我来解答 赞 17 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 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 加载更多 相关推荐 1 回答 59 浏览 StyleLint 报错“Expected single space after ‘}’”是怎么回事? 我在写 CSS 的时候,StyleLint 一直报错说“Expected single space after '}'”,但我看代码里大括号后面明明没多余空格啊,到底哪里出问题了? 我的 .style... 令狐彩云 前端 2026-03-29 15:27:13 2 回答 92 浏览 Babel 转译 React JSX 时报错 Unexpected token,怎么回事? 我刚搭了个新项目,用 Babel 处理 React 代码,但一跑构建就报“Unexpected token”错误,指向 JSX 的尖括号。明明装了 @babel/preset-react,也配进去了,... Dev · 玉杰 工具 2026-03-20 11:29:23 2 回答 139 浏览 stylelint为什么检测不到PostCSS自定义属性的拼写错误? 我在用PostCSS处理CSS变量时遇到问题,stylelint没有报错但明显变量名拼写错了。比如下面这段代码: <style> :root { --main-color: #ff6b6b... IT人子萱 工具 2026-02-08 07:10:23 2 回答 67 浏览 StyleLint配置了缩进规则但无效怎么办? 我在项目里配置了stylelint的缩进规则,设置成2个空格,但保存CSS文件时完全没反应,代码没报错也不自动修复。之前按文档写过: { "rules": { "indentation": [2, {... Air-米阳 前端 2026-02-06 12:18:41 2 回答 128 浏览 为什么用Vite导入JSON文件时报“Unexpected token”错误? 在Vue组件里用import引入本地JSON文件时突然报错,提示“Unexpected token {”。之前正常运行过,今天改了数据结构就崩了…… 代码是这样的:<script setup&g... 司马瑞玲 工具 2026-01-26 14:44:31 1 回答 57 浏览 stylelint 在 PostCSS 中不生效是怎么回事? 我用 PostCSS 配合 stylelint 做 CSS 代码检查,但不管怎么改配置,stylelint 都没报任何错误,哪怕我故意写错语法。是不是插件顺序或者配置哪里有问题? 我的 postcss... UE丶广云 工具 2026-03-21 16:39:16 2 回答 92 浏览 stylelint 在 PostCSS 中不生效是怎么回事? 我最近在项目里配置了 PostCSS 和 stylelint,想用它来规范团队的 CSS 写法。但不管怎么改规则,PostCSS 编译时都没报错,也不提示任何 stylelint 的警告或错误。我明明... 百里宝玲 工具 2026-03-17 00:10:20 2 回答 77 浏览 StyleLint如何配置忽略node_modules和特定文件夹的检查? 我在项目里用了StyleLint做CSS检查,但每次运行都会报node_modules和dist目录的错误。试过在配置文件里加"ignoreFiles": ["node_modules/**"],但还... 卓尚 Dev 前端 2026-02-18 22:14:27 2 回答 40 浏览 ESLint 报错说不支持可选链操作符,是不是解析器没配对? 我在项目里用了可选链(?.)语法,但 ESLint 一直报错说 Unexpected token,明明我的 Node 和浏览器都支持啊。是不是 ESLint 的 parser 没设对? 我试过加 pa... 综敏 工具 2026-03-10 15:49:16 2 回答 57 浏览 SWC 编译 React 时为啥不识别 JSX 语法? 我用 SWC 替换 Babel 做构建,但一写 JSX 就报错,说 Unexpected token。明明装了 @swc/core 和 @swc/cli,也配了 .swcrc,但还是不行。 这是我的组... 司徒光磊 前端 2026-03-05 14:54:23
直接用这个修复方案:
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 还在用旧缓存,报了一堆奇怪的错,重启编辑器才好。