webpackDevMiddleware不会自动重新加载

Dan*_*ker 3 javascript express webpack html-webpack-plugin webpack-dev-middleware

所以我使用webpack dev中间件如下:

const compiledWebpack = webpack(config),
          app             = express(),
          devMiddleware   = webpackDevMiddleware(compiledWebpack, {
            historyApiFallback: true,
            publicPath: config.output.publicPath,
            overlay: {
              warnings: true,
              errors: true
            },
            compress: true,
            stats: { colors: true }
          })


    app.use(devMiddleware)




    app.get('*', (req, res) => {
      // Here is it! Get the index.html from the fileSystem
      const htmlBuffer = devMiddleware.fileSystem.readFileSync(`${config.output.path}/index.html`)

      res.send(htmlBuffer.toString())
    })

    app.listen(PORT, function () {})

    console.log('Running on port ' + PORT)
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,我没有得到实时重装.我也没有获得叠加功能.我正在使用此设置,因为我使用的是webpackhtmlplugin.

我觉得我在这里错过了一个简单的概念:(任何想法?

Mic*_*ngo 11

对于实时重新加载,您还需要添加webpack-hot-middleware.

在您的服务器中,您必须添加:

const webpackHotMiddleware = require('webpack-hot-middleware');

const hotMiddleware = webpackHotMiddleware(compiledWebpack);
app.use(hotMiddleware);
Run Code Online (Sandbox Code Playgroud)

您还需要在webpack配置中添加'webpack-hot-middleware/client'您的条目和webpack.HotModuleReplacementPlugin插件:

entry: [
  'webpack-hot-middleware/client',
  './src/index.js' // Your entry point
],
plugins: [
  new webpack.HotModuleReplacementPlugin()
]
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请参阅安装和使用.

  • 我想补充一点,如果你想在HMR无法自动触发时自动重新加载(比如,当控制台说"需要完全刷新"时),请确保在"?reload = true"处添加webpack条目的末尾指向''webpack-hot-middleware/client'` (5认同)