HAPI を webserver として、webpack-hot-middleware を hot-module-replacement として使用するアプリケーションを開発しています。
アプリケーション サーバーは で実行されhttp://hostname:8080
ます。
で実行されるアプリケーションを提供するhttp://hostname/my/module/
ために、 からまでのすべてを書き換える IIS 書き換えを使用しています。http://hostname/my/module/
hostname:8080
http://hostname/my/module/(...)
http://hostname:8080/(...)
この問題は、 を使用して開発するときに発生しwebpack-hot-middleware
ます。webpack hot-module-replacement は常にhmrエンドポイント (変更を検出/提供するための websocket だと思います) をハードコーディング/__webpack_hmr
しようとしますが、ルート ページhttp://hostname/my/module/
が開かれている場合はhttp://hostname/__webpack_hmr
. もちろん、これは見つからず、404 を返します。これは、で実行されている IIS がhttp://hostname/
webpack hmr について何も知らないためです。
ここで、開発のために、独自のアドレスを使用してアプリケーションにアクセスすることも問題ありませんがhttp://hostname:8080/
、CORS エラーが発生します。
オリジン ' http://hostname:8080 ' から ' http://hostname/__webpack_hmr ' にあるリソースへのアクセスがCORS ポリシーによってブロックされました: 要求されたリソースに 'Access-Control-Allow-Origin' ヘッダーが存在しません。
したがって、を使用してアプリケーションにアクセスしているにもかかわらずhttp://hostname:8080
、webpack-hmr はまだソケットを開こうとしているように見えhttp://hostname/__webpack_hmr
ますが、さらに CORS エラーで失敗します。
最終的にエンドポイントを相対パスとしてwebpack.HotModuleReplacementPlugin
提供する必要があることを伝えるオプションはありますか(正しいアドレスになるように書き換えられます)。__webpack_hmr
http://hostname/my/module/__webpack_hmr
http://hostname:8080/__webpack_hmr
または、これが不可能な場合、を使用してアプリケーションにアクセスするときに少なくとも機能させる方法はありますhttp://hostname:8080/(...)
か?
ドキュメントには何も見つかりませんでした。一部の Github の問題でのみ、Webpack のpublicPath
構成が言及されていますが、それがどのように役立つかわかりませんでした。
更新
もう少し進んwebpack-hot-middleware
で、webpack構成のエントリポイントを設定する"webpack-hot-middleware/client?path=http://hostname/my/module/__webpack_hmr"
と、__webpack_hmrエンドポイントが正しい場所で利用できるようになることがわかりました。
しかし、次の問題は、HRM ファイルが
dist.XYZ.hot-update.json
distbundle.XYZ.hot-update.js
/dist.XYZ.hot-update.json
また、ルート ディレクトリ ( 、 ) の直下に配置しようとします/distbundle.XYZ.hot-update.js
。これらの場所を相対的にする/特定のサブディレクトリを設定する可能性はありますか?
別のIIS書き換えを追加して、これらのパスを次のように書き換えhttp://localhost:8080/dist.XYZ.hot-update.json
ますが、IISを構成する必要のないソリューションをお勧めします。