You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js CSS模块中BEM双下划线写法引发语法错误求助

解决Next.js CSS Modules中BEM语法错误的问题

错误原因

你在CSS模块里用了Sass的嵌套选择器语法(&__logo),但Next.js默认的CSS模块只支持标准CSS,不识别这种Sass语法,所以抛出了"Selector is not pure"的错误。

两种解决办法

方法一:改用标准CSS写法(无需额外依赖)

直接在CSS模块里写出完整的BEM类名,不用嵌套:

/* Header.module.css */
.header {
  height: 100%;
}

.header__logo {
  height: 100px;
}

JS文件里的代码保持不变,依然使用style.header和style.header__logo即可正常运行。

方法二:启用Sass支持(保留嵌套语法)

如果想继续用Sass的嵌套写法,需要安装Sass依赖并修改文件后缀:

  1. 安装Sass:在项目根目录执行命令
npm install sass
# 或者用yarn
yarn add sass
  1. 把Header.module.css重命名为Header.module.scss
  2. 修改JS文件里的导入路径:
import styles from './Header.module.scss'
  1. 原来的Sass嵌套写法可以保留,编译时会自动转换成标准CSS类名,错误就会消失。

内容的提问来源于stack exchange,提问作者Shanthi B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:10:38