0

私はwebpackコード分割を利用しようとしています。すべてがうまく機能しているように見えます.webpackはコードを正しく分割し、依存関係はほとんど期待どおりです.

ホットモジュール交換で動作させることができないことを除いて。

127.0.0.1:8009/main.js を正常にロードしました

しかし、main.js は 127.0.0.1:8001/assets/1.chunk.js を読み込もうとしています

それは理にかなっていますか?私は何かが欠けているに違いない。

ノード サーバーを 127.0.0.1:8001 で実行し、ホット ミドルウェア クライアントを 127.0.0.1:8009 で実行しています。

** main.js**

require.ensure([], function (require) {
  var admin = require('./admin');
}, 'admin');

私のWebpack構成

const PATHS = {
  root: __dirname,
  client: path.join(__dirname, '../', 'browser', 'scripts'),
  public: path.join(__dirname, '../', '../', 'public')
};

var webpackConfig = {
    hotPort: process.env.PORT_HOT,
    devtool: 'eval',
    name: 'browser',
    resolve: {
      root: PATHS.root,
      extensions: ['', '.js', '.jsx', '.styl'],
      modulesDirectories: [
        'node_modules',
        PATHS.client,
      ],
    },
    entry: {
      main: ['main', hotMiddlewareScript]
    },
    output: {
      path: PATHS.public,
      filename: '[name].js',
      publicPath: '/assets/'
    },
    module: {
        noParse: [
            /lodash/
        ],
        loaders: [
        {
          test: /\.js$|\.jsx$/,
          exclude: /node_modules/,
          loaders: ['babel']
        }
    },
};

シンプルホットサーバー

const app = express();

const compiler = webpack(webpackConfig);

app.use(webpackDev(compiler, {
  noInfo: true,
  publicPath: webpackConfig.output.publicPath
}));

app.use(webpackHot(compiler));

app.listen(webpackConfig.hotPort);
4

1 に答える 1

1

publicPath を hot-middleware client に設定することでそれができました

output: {
  path: PATHS.public,
  filename: '[name].js',
  chunkFilename: '[chunkhash].js',
  publicPath: http://127.0.0.1:8009
}
于 2016-11-01T20:39:37.410 に答える