webpack-dev-server热加载不能与boot2docker一起使用

我目前正在尝试通过webpack-dev-server使webpack-dev-server与热加载工作。

我有我的容器中使用docker-osx-dev正确拾取文件更改,但是socket.io热重新加载不起作用。

原因是我在运行服务器时设置了--host 0.0.0.0 ,这样它就可以在我的主机上访问了。 然而,这意味着它正在寻找0.0.0.0的socket.io服务器。

所以,当我加载页面时,它会尝试连接到http://0.0.0.0:8080/socket.io/?EIO=3&transport=polling&t=1434584701670-0 ,我的领事中出现错误。 实际上,它应该连接到http://dockerhost:8080/socket.io/

有反正告诉webpack-dev-server使用不同的主机来获得socket.io连接吗?

Github问题63可能指的是同样的问题,但尚未解决。

我切换到使用https://github.com/brikis98/docker-osx-dev它使用rsync来同步OS X和容器之间的文件,并且还添加了允许socket.io轮询的http://dockerhost主机条目从OS X Web浏览器正确的容器。

经过几个小时的search,我发现 ,内联选项只是添join口点。 你可以通过用localhost或其他主机replaceoptions.host(你的情况为0.0.0.0)来解决这个错误。

检测文件更改最简单的方法是将watchOptions.poll设置为true。

所以我意识到,即使它在控制台给我一个错误,通过尝试连接到错误的主机,它也连接到正确的主机,所以热载入工作。

最后,我的configuration看起来像这样:

 var entry = ["./config/mainApp"]; var loaders = { "jsx": ["react-hot", "babel-loader?stage=0"] "js": { loader: "babel-loader?stage=0", include: path.join(__dirname, "app") }, "json": "json-loader", "json5": "json5-loader", "txt": "raw-loader", "png|jpg|jpeg|gif|svg": "url-loader?limit=10000", "woff|woff2": "url-loader?limit=100000", "ttf|eot": "file-loader", "wav|mp3": "file-loader", "html": "html-loader", "md|markdown": ["html-loader", "markdown-loader"], "css": "style-loader!css-loader" }; var preloaders = { "js": "source-map-loader" }; var plugins = [ new webpack.PrefetchPlugin("react"), new HtmlWebpackPlugin({ inject: true, template: "app/index.html" }), new webpack.PrefetchPlugin("react/lib/ReactComponentBrowserEnvironment") ]; module.exports = { entry: entry, output: { path: path.join(__dirname, "dist"), filename: "bundle.js", sourceMapFilename: "bundle.map", pathinfo: true }, module: { loaders: loadersByExtension(loaders), preloaders: loadersByExtension(preloaders) }, devtool: "eval-source-map", debug: true, resolve: { root: path.join(__dirname, "app"), extensions: ["", ".web.js", ".js", ".jsx"] }, plugins: plugins, devServer: { port: 8080, host: "0.0.0.0", inline: true } }; 

我开始像这样:

 webpack-dev-server --config webpack-hot-dev-server.config.js --colors --progress --hot 

对于一个完整的例子, 看看我的应用程序的初始阶段,只是有这样的样板+反应

一些脑袋在这里搔抓后是解决方法:

1-将主机名添加到/ etc / hosts

 YOUR_DOCKER_MACHINE_IP devapp (or any other hostname you choose) 

2-在您的webpackconfig条目

 entry: main: [ 'webpack-dev-server/client?http://devapp:YOUR_EXPOSED_PORT', 'webpack/hot/only-dev-server', YOUR_SCRIPT_FILE ] }