如何从webpack-dev-middleware / webpack-hot-middleware引用内存包

时间:2019-11-26 14:58:47

标签: webpack webpack-dev-middleware webpack-hot-middleware

我正在将Webpack实施到旧版Express前端应用程序中。我已经按照说明实施了webpack-dev-middleware和webpack-hot-middleware,但是我不知道如何实际引用索引文件中webpack-dev-middleware构建的内存包。 / p>

server.js:

...... 
// Webpack HMR
if (isDevelopment) {
  const webpack = require('webpack');
  const webpackConfig = require('./webpack.config');
  const compiler = webpack(webpackConfig);

  app.use(
    require('webpack-dev-middleware')(compiler, {
        noInfo: false,
        hot: true,
        publicPath: webpackConfig.output.publicPath,
    })
  );
  app.use(require('webpack-hot-middleware')(compiler));
}
....

webpack.config.js:

...
entry: {
    app: [
      'webpack-hot-middleware/client?path=http://localhost:3001/__webpack_hmr&timeout=2000&overlay=false',
      path.join(__dirname, './public/js/boot/app.js'),
    ],
    deps: [
      'webpack-hot-middleware/client?path=http://localhost:3001/__webpack_hmr&timeout=2000&overlay=false',
      path.join(__dirname, './public/js/boot/deps.js'),
    ]
  },
output: {
    path: isDevelopment ? path.join(__dirname, './public/js/bundles') : path.join(__dirname, './dist/js/bundles'),
    publicPath: '/',
    filename: '[name].js'
  },
....

Base view: server/views/index.jade:

...
  script(src='/js/bundles/app.js')
  script(src='/js/bundles/deps.js')
...

注意:如果我禁用webpack-dev-middleware并仅使用Webpack构建文件,它们就可以正常工作。问题是(我认为)我在基本index.jade视图中使用该路径引用捆绑的方式。由于webpack-dev-middleware将捆绑软件写入内存,而不是写入文件系统中的该位置,因此它试图读取的内容不存在。

引用这些包路径的正确方法是什么,以便它们是来自webpack-dev-middleware的内存中包?

项目布局:

  • /
    • server.js
    • webpack.config.js
    • 服务器/
      • 观看次数/
      • index.jade(我的基本视图)
    • 公共/
      • js /
        ...

0 个答案:

没有答案