2

HAPI を webserver として、webpack-hot-middleware を hot-module-replacement として使用するアプリケーションを開発しています。

アプリケーション サーバーは で実行されhttp://hostname:8080ます。

で実行されるアプリケーションを提供するhttp://hostname/my/module/ ために、 からまでのすべてを書き換える IIS 書き換えを使用しています。http://hostname/my/module/hostname:8080http://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_hmrhttp://hostname/my/module/__webpack_hmrhttp://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を構成する必要のないソリューションをお勧めします。

4

1 に答える 1