webpack-dev-server - Webpack 5 : why MiniCssExtractPlugin. 加载程序不允许 HMR 工作?

标签 webpack-dev-server webpack-hmr webpack-5 wds

谁能解释一下为什么 MiniCssExtractPlugin.loader 不允许 HMR 工作以及如何修复它?我创建了以下 webpack.config.js 文件:

const path = require ('path')
const HTMLWebpackPlugin = require ('html-webpack-plugin')
const MiniCssExtractPlugin = require ('mini-css-extract-plugin')

const cssLoaders = extra => {
    const loaders = [
        {
            loader: MiniCssExtractPlugin.loader,
            options: {
                publicPath: '',
            }
        },
        'css-loader'
    ]
    if (extra)
    {
        loaders.push(extra) 
    }
    return loaders
}

module.exports = {  
    entry: './src/js/index.js',
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'app')
    },
    devServer: {
        port: 8000,
        hot: true
    },
    plugins:[
        new HTMLWebpackPlugin({
            template: './src/index.html'
        }),
        new MiniCssExtractPlugin({filename: '[name].[contenthash].css'})    
    ],
    module: {
        rules: [
            {
                test: /\.css$/,
                use: cssLoaders()
            }
        ]
    }       
}

保存新样式后,我在浏览器控制台中收到以下消息:

[Info] [WDS] App updated. Recompiling... (x2)
[Info] [WDS] App hot update...
[Log] [HMR] Checking for updates on the server...
[Log] [HMR] Updated modules:
[Log] [HMR]  - ./src/styles/style.css
[Log] [HMR] App is up to date.
[Log] [HMR] Reload all css

但事实上,为了看到变化,我必须重新加载页面。如果我换线

use: cssLoaders()

use: ['style-loader','css-loader']

HMR 真正开始发挥作用。我在很多论坛上看到添加

target: 'web'

有助于解决此问题,但就我而言,它也无法解决此问题。

最佳答案

为了避免这种情况,有必要使编译文件的名称不带哈希值或内容哈希值

关于webpack-dev-server - Webpack 5 : why MiniCssExtractPlugin. 加载程序不允许 HMR 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66813956/

相关文章:

webpack - 路径连接在 webpack 5 中不起作用,但在 webpack 4 中起作用

javascript - 什么时候不应该接受 webpack 热模块重载?

javascript - Webpack 'production' 模式不编译任何内容

javascript - 热模块更换——更新但不重新渲染

javascript - Webpack 导入 css 时出现错误

javascript - 本地 ES 模块(浏览器或 Node.js)的热模块替换*没有* Webpack?没有构建工具

webpack - Redux Saga 热重载

webpack-5 - 如何将简洁的 webpack 插件迁移到 webpack v5

javascript - 尝试运行我的 "webpack --config ./webpack.config.js"时出现错误

javascript - 将 webpack 设置为通过 HTTPS 在自定义域上本地运行