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

Webpack 5搭配css-loader7.1.1启用CSS Modules时样式为undefined的解决求助

解决Webpack 5.91.0 + css-loader 7.1.1下CSS Modules导入为undefined的问题

问题根源

css-loader从v6版本开始,不再默认启用CSS Modules,之前v5及更早版本会自动识别.module.css后缀并启用模块功能,v6+必须通过显式配置开启。

解决方案

修改webpack.config.js中的CSS规则,拆分普通CSS和CSS Modules文件的处理逻辑,对.module.css文件单独配置启用Modules:

修改后的module.rules部分代码如下:

module: {
    rules: [
        // ... 保留原有JS/JSX、资源文件规则
        // 处理普通CSS文件(非Modules)
        {
            test: /\.css$/i,
            exclude: /\.module\.css$/i,
            use: [stylesHandler, 'css-loader'],
        },
        // 处理CSS Modules文件
        {
            test: /\.module\.css$/i,
            use: [
                stylesHandler,
                {
                    loader: 'css-loader',
                    options: {
                        modules: {
                            // 开发环境用可读性高的类名,生产环境用哈希压缩
                            localIdentName: isProduction ? '[hash:base64]' : '[name]__[local]--[hash:base64:5]'
                        }
                    }
                }
            ],
        },
        // ... 其他规则保持不变
    ],
},

关键说明

  • 拆分规则后,普通.css文件仍按原有逻辑处理,.module.css文件会启用CSS Modules功能
  • 如果不需要自定义类名格式,可直接将modules设为true,使用默认配置
  • 修改后重启Webpack服务,导入的styles对象就能正常获取类名映射,不再返回undefined

内容的提问来源于stack exchange,提问作者Kevin Jia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:05:14