Angular - Возможность установки "Не найден соответствующий сервисный работник" - PullRequest
1 голос
/ 28 января 2020

Я столкнулся с серьезной проблемой в PWA, которую я сейчас поддерживаю:

Проблема в том, что PWA не устанавливается в производственной среде. В то время как на моей локальной машине все работает нормально (проверено с http-сервером на localhost)

PWA состоит из приложения angular 8. ServiceWorker был настроен с @angular/pwa package.

. Особенность рабочей среды заключается в том, что приложение работает за обратным прокси-сервером. Таким образом, само приложение размещается на внутренней корпоративной машине (недоступно извне корпоративной сети). Обратный прокси-сервер предоставляет доступ к приложению извне, а также добавляет HTTPS (на внутренней машине есть только http). Приложение вызывается извне с этим URL: https://example-corp.com/appname Внутренний доступ к приложению осуществляется с помощью http://<internal-ip>/

Базовая ссылка приложения angular имеет значение <base href="/appname/">

Доступ осуществляется через внешний адрес, работник службы работает правильно, в соответствии с chrome dev инструментов. Файл manifest.webmanifest также загружается. Прилагаемые значки приложений из webmanifest правильно отображаются в инструментах chrome dev. Инструменты разработчика также заявляют, что страница защищена https. Итак, все должно быть хорошо для установки.

Но возможность установки не предоставляется. Сообщение в явном виде. :

Не найден соответствующий работник службы

Я изменил start_url в манифесте на "appname", но безуспешно. Ngsw-worker. json и webmanifest хранятся в каталоге root приложения.

Есть ли способ получить больше информации / отладочной информации о том, что неправильно или не полностью заполнено для установки?

manifest.webmanifest:

{
"name": "App-Name",
"short_name": "App",
"theme_color": "#fafafa",
"background_color": "#824CFF",
"display": "standalone",
"scope": "/",
"start_url": "/",
"icons": [ <omitted> ]
}

Я предполагаю, что проблема заключается в использовании обратного прокси-сервера перед приложением или base-href, но я не могу его локализовать ...

1 Ответ

1 голос
/ 30 января 2020

Измените scope свойство на то же значение, что и start_url. Таким образом, ваш манифест примет эту форму:

{
"name": "App-Name",
"short_name": "App",
"theme_color": "#fafafa",
"background_color": "#824CFF",
"display": "standalone",
"scope": "/appname/",
"start_url": "/appname/",
"icons": [ <omitted> ]
}

Пропуск свойства scope также сделает работу.

См. https://developers.google.com/web/fundamentals/web-app-manifest?hl=en.

...