2

現在、boot2docker を介してホット ローディングwebpack-dev-serverを使用しようとしています。

を使用して、コンテナでファイルの変更を正しく取得していますdocker-osx-devが、socket.io のホット リロードが機能していません。

その理由は--host 0.0.0.0、ホストマシンでアクセスできるように、サーバーの実行時に設定したためです。ただし、これは で socket.io サーバーを探していることを意味します0.0.0.0

そのため、ページをロードすると、接続が試行さhttp://0.0.0.0:8080/socket.io/?EIO=3&transport=polling&t=1434584701670-0れ、consul でエラーが発生します。実際には に接続されているはずhttp://dockerhost:8080/socket.io/です。

webpack-dev-serversocket.io接続を取得するために別のホストを使用するように指示する方法はありますか?

Github issue 63は同じ問題を参照している可能性がありますが、未解決です。

4

4 に答える 4

1

そのため、コンソールにエラーが表示されていても、間違ったホストに接続しようとすると、正しいホストにも接続されているため、ホットロードが機能することに気付きました.

最終的に、私の構成は次のようになりました。

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

完全な例については、このボイラープレート + 反応だけを持つアプリの初期段階を確認してください。

于 2015-06-18T17:43:58.707 に答える
1

https://github.com/brikis98/docker-osx-devを使用するように切り替えました。これは、rsync を使用して OS X とコンテナーの間でファイルを同期し、また、socket.io がコンテナーを正しくポーリングできるようにするためのホスト エントリを追加します。 OS X ウェブブラウザ。http://dockerhost

于 2015-07-19T04:41:25.460 に答える
1

数時間検索した後、そのインラインオプションエントリポイントを追加するだけです。このエラーは、options.host (この場合は 0.0.0.0) を localhost または他のホストに置き換えることで修正できます。

ファイルの変更を検出する最も簡単な方法は、watchOptions.pollを true に設定することです。

于 2015-07-31T16:25:07.190 に答える