Мы разрабатываем приложение, которое использует hapi в качестве веб-сервера и web-hot-middleware для замены горячего модуля.
Сервер приложений работает на http://hostname:8080
.
Приложение обычно доступный через http://hostname/my/module/
Чтобы http://hostname/my/module/
обслуживал приложение, работающее под hostname:8080
, мы используем перезапись IIS, которая переписывает все с http://hostname/my/module/(...)
до http://hostname:8080/(...)
.
Теперь проблема возникает при разработке с использованием webpack-hot-middleware
. Кажется, горячая замена модуля webpack всегда пытается сделать его hmr конечной точкой (я думаю, что веб-сокет для обнаружения / обслуживания изменений) жестко закодирован в /__webpack_hmr
который - если root страница http://hostname/my/module/
открыта - преобразуется в http://hostname/__webpack_hmr
. Конечно, это не может быть найдено и поэтому возвращает 404, так как IIS, работающий на http://hostname/
, ничего не знает о webpack hmr.
Теперь, для разработки, было бы также хорошо получить доступ к приложению, используя его собственный адрес http://hostname:8080/
, но затем возникает ошибка CORS:
Доступ к ресурсу в 'http://hostname/__webpack_hmr' из источника 'http://hostname: 8080 'был заблокирован политикой 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-hot-middleware/client?path=http://hostname/my/module/__webpack_hmr"
делает конечную точку __webpack_hmr доступной в правильном месте.
Но теперь возникает следующая проблема: файлы HRM
dist.XYZ.hot-update.json
distbundle.XYZ.hot-update.js
также пытаются найти непосредственно в каталоге root (/dist.XYZ.hot-update.json
, /distbundle.XYZ.hot-update.js
). Есть ли возможность сделать эти места относительными / задать для них поддиректорию c?
Добавление еще одного перезаписи IIS для переписывания этих путей к чему-то вроде http://localhost:8080/dist.XYZ.hot-update.json
делает его работающим, но я бы предпочел решение без необходимости конфигурировать IIS для этого.