В предыдущих версиях реализации "Угловой сервис" одним из вариантов конфигурации была "routing"
. Это можно увидеть в этом безответном вопросе SO, на который ссылается в этой проблеме с угловым CLI, и лучшая оставшаяся документация, похоже, является записью в блоге Стивеном Флюином (в команде Angular), а также беседой I/O от Alex Rickabaugh (от Google).
С угловым 5 ServiceWorkerModule
был хорошо продуман, и теперь большинство настроек можно обрабатывать с помощью ngsw-config.json
. Тем не менее, больше не упоминается, как обрабатывать перенаправление для маршрутов, в любом месте в руководстве по углу.io, или в документации. Поэтому я столкнулся со следующей проблемой: когда я посетил мое приложение и перешел в автономный режим, я все равно могу получить доступ к приложению при его непосредственном посещении: https://jackkoppa.github.io/cityaq-sw-issue. Однако при загрузке приложение перенаправляется на маршрут search
, и большинство пользователей будут пытаться загрузить с URL-адреса, например https://jackkoppa.github.io/cityaq-sw-issue/search?cities=Shanghai (для простоты, я "Я просто говорю о настольном и мобильном устройствах Chrome на данный момент и в Incognito, когда это возможно".
Когда вы пытаетесь посетить этот URL-адрес в автономном режиме, вы сразу получаете 504 - Gateway Timeout. Это происходит потому, что сервисный работник только кэшировал индекс и не знает, что другие маршруты должны перенаправляться на индекс, чтобы он мог загружаться. Я уверен, что предыдущие итерации работы "Угловой сервис" могли бы обработать этот сценарий, настроив переадресацию на индекс для заданных маршрутов. Есть ли способ справиться с этим перенаправлением в текущем, угловом 5+ ngsw-config.json
или в сгенерированном файле ngsw.json
? Если это не так, как следует обходиться в отдельном JS файле служебного работника?