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

Webpack 5样式热更新报Uncaught TypeError错误如何解决?

错误根因

该报错是Webpack5 开发环境同时开启HMR热更新、使用MiniCssExtractPlugin.loader导致的兼容问题。
MiniCssExtractPlugin核心作用是生产环境抽离独立CSS文件,其loader默认对开发环境热更新的适配存在缺陷,热更新替换样式模块时会找不到对应的挂载对象,因此抛出类型错误;由于样式本身已经完成增量构建注入到页面中,所以新样式可以正常生效。


修复方案

方案1(推荐):开发/生产环境区分loader

开发环境用style-loader处理样式注入,仅生产环境启用MiniCssExtractPlugin抽离CSS,修改webpack配置的module.rules部分即可:

module: {
    rules: [
        {
            test: /\.css$/i,
            use: [
                // 开发环境用style-loader,支持HMR无兼容问题
                isDev ? 'style-loader' : MiniCssExtractPlugin.loader,
                {
                    loader: "css-loader",
                    options: {
                      sourceMap: true,
                    },
                  },
              ],
        }
    ]
},

方案2:强制开发环境用MiniCssExtractPlugin并开启热更适配

如果确实需要开发环境也输出独立CSS文件,可以给MiniCssExtractPlugin.loader开启热更新适配配置:

module: {
    rules: [
        {
            test: /\.css$/i,
            use: [
                {
                    loader: MiniCssExtractPlugin.loader,
                    options: {
                        // 开发环境开启HMR适配
                        hmr: isDev,
                        // 按需配置公共路径避免样式资源加载路径错误
                        publicPath: '/'
                    }
                },
                {
                    loader: "css-loader",
                    options: {
                      sourceMap: true,
                    },
                  },
              ],
        }
    ]
},

修改配置后重启devServer即可验证,修改样式文件不会再抛出该报错。

内容的提问来源于stack exchange,提问作者Rafael Shepard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:18:02