2

こんにちは、私は現在、webpacks HMR と一緒に Express を使用する方法を学ぼうとしています。ファイルを更新して保存するたびに、次のエラーが表示されます。

「次のモジュールをホット アップデートできませんでした: (フル リロードが必要です)」 「./app/components/App.js」

現在の構成ファイルに何か問題がありますか?

したがって、次のようなディレクトリ構造があります。

todos
    |
    app
      |
    package.son
    server.js
    webpack.config.js

次のような webpack.config.js ファイルと server.js ファイルがあります。

var path = require('path');
var webpack = require('webpack');


module.exports = {
  context: path.join(__dirname + "/app"),

  entry: ['./index'],
  output: {
    path: "/bundle",
    publicPath: '/static/',
    filename: "bundle.js"
  },
  module: {
    loaders: [
     {
        test: /\.jsx?$/,
        exclude: /(node_modules|bower_components)/,
        loader: 'babel',
        query: {
          presets: ['react', 'es2015']
        }
      }
    ]
  },
  resolve: {
    extensions: ['', '.js', '.jsx']
  }

};

サーバー.js

var webpack = require('webpack')
var webpackDevMiddleware = require('webpack-dev-middleware')
var webpackHotMiddleware = require('webpack-hot-middleware')
var config = require('./webpack.config')

var app = new (require('express'))()
var port = 3000

var compiler = webpack(config)
app.use(webpackDevMiddleware(compiler, { noInfo: true, publicPath: config.output.publicPath }))
app.use(webpackHotMiddleware(compiler))

app.get("/", function(req, res) {
  res.sendFile(__dirname + '/app/index.html')
})

app.listen(port, function(error) {
  if (error) {
    console.error(error)
  } else {
    console.info("==>   Listening on port %s. Open up http://localhost:%s/ in your browser.", port, port)
  }
})
4

1 に答える 1

2

モジュールを受け入れてみましたか? Webpack HMR のドキュメントには、次のように記載されています。

モジュールは、「承認」した場合にのみ更新できます。したがって、親または親の親でモジュールを module.hot.accept する必要があります。たとえば、ルーターやサブビューが適しています。

これを index.js ファイルまたは HMR にリロードさせたいモジュールで試してください。

if (module.hot) {  
 module.hot.accept();
}
于 2016-03-12T17:31:25.660 に答える