Поскольку я понимаю, что при запуске ng serve
приложение Angular, опробуйте сервер dev, чтобы узнать, нужна ли перезагрузка. Ожидается, что этот сервер будет жить на порту 4200 (по умолчанию).
Я запускаю среду dev с несколькими контейнерами докеров, чтобы сохранить все красивое и изолированное. Поэтому некоторые из моих угловых приложений прослушивают разные порты. Кажется, это приводит к появлению следующего сообщения об ошибке в моей консоли браузера каждые две секунды:
zone.js:2744 GET http://localhost:4200/sockjs-node/info?t=1518533495440 net::ERR_EMPTY_RESPONSE
Где я могу изменить конфигурацию, чтобы указать клиента живой перезагрузки в правильном направлении? angular-cli.json, похоже, ничего не делает.
Я нашел решение. Вы должны запустить ng serve
с --public-host
(aliases: --live-reload-client
). Поэтому я адаптировал свою команду start в package.json из
"start": "ng serve --host 0.0.0.0"
в
"start": "ng serve --host 0.0.0.0 --live-reload-client http://localhost:4400"
Все дело в том, что я не хочу менять порт самого сервера dev. Он должен работать внутри контейнера Docker на порту 4200. Но порт 4200 отображается в Docker на внешний порт 4400 (в моем случае). Я вызываю http://localhost: 4400 для запуска приложения в своем браузере, а клиент перезагрузки также должен вызывать http://localhost: 4400 для обновлений. Но он называется http://localhost: 4200. С параметром --live-reload-client
все работает.
Вы можете настроить HTTP-порт по умолчанию и тот, который используется сервером LiveReload, с двумя параметрами командной строки:
ng serve --host 0.0.0.0 --port 4201 --live-reload-port 49153
Вы можете изменить порт с помощью --port
ng serve --port 4201
Запустит сервер на порту 4201
ng serve --public-host http://localhost:4200
. URL в адресной строке 9090, который прокси на 4200 (но не может прокси веб-сокеты)