ホットモジュールの交換にwebpack-dev-serverを使用しています。正常に機能していますが、このエラーは数秒ごとにコンソールに表示され続けます:GET http://mysite:8080/__webpack_hmr 404 (Not Found)
。
これが私のwebpack.config.jsです:
var webpack = require('webpack'),
hostname = 'mysite',
port = 8080;
module.exports = {
entry: [
'babel-polyfill',
'./src/js/main.js',
'./dev/requireCss.js',
'webpack/hot/dev-server',
// I'm assuming the fault lies in the following line, but I can't figure out what's wrong
'webpack-hot-middleware/client?path=http://'+hostname+':'+port+'/__webpack_hmr'
],
output: {
path: __dirname + '/webpack',
filename: "bundle.js",
publicPath: 'http://'+hostname+':'+port+'/'
},
module: {
loaders: [{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loaders: ['react-hot', 'babel-loader?presets[]=react&presets[]=es2015']
} // removed some loaders for brevity
]
},
resolve: {
extensions: ['', '.json', '.js', '.jsx']
},
plugins: [
new webpack.HotModuleReplacementPlugin()
],
devtool: "source-map",
devServer: {
contentBase: __dirname + '/dev',
hot: true,
proxy: [{
path: /\/(?!__webpack_hmr).+/, // I get the same error if I change this to 'path: /\/.+/'
target: 'http://my-backend.localhost'
}]
}
};
アイデアは、開発サーバーが/
および__webpack_hmr
以外のすべてのリクエストをバックエンド(my-backend.localhost
)に転送するというものです。これは、__webpack_hmr
を除くすべてに対して正常に機能します。
エラーを消すためにconfで変更できるものはありますか?
entryの下の次の行を削除することで修正されました:'webpack-hot-middleware/client?path=http://'+hostname+':'+port+'/__webpack_hmr'
。 なぜ機能したのかわかりません。 これがなぜあなたのために働くかもしれないかについての説明のためのアミン・アリアナの答えを見てください。
エントリ配列の次の行は、webpack-dev-server
でうまく機能しません。
webpack-hot-middleware/client
webpack-hot-middleware
以外のサーバー(express
など)で作業するためのwebpack-dev-server
の要件であるためです。
Webpackのチュートリアルに従って、この混合サーバーの問題に遭遇しました。 webpack-dev-serverを使用したWebpackの構成ファイルのエントリポイントがwebpack-hot-middlewareによって生成されたアーティファクトを必要としないように更新する必要があります。それに応じてサーバー。
エントリ配列からその行を削除できます。これは、dev-serverを使用する場合に問題を解決するはずです。
参考までに、コードのその行はここから来ました: https://github.com/webpack-contrib/webpack-hot-middleware
[webpack config's]エントリ配列に
webpack-hot-middleware/client?...
を追加します。これにより、バンドルが再構築され、それに応じてクライアントバンドルが更新されると、サーバーに接続して通知を受信します。
「webpack-dev-serverを使用しています」という質問に基づいて、「webpack-hot-middleware」を使用していないため、エントリ行を削除する必要があります。