У меня угловой PWA.Его сервисный работник работал безупречно, пока я не обновил Angular 5.0 до 7.2
. После обновления я вижу следующее error in /ngsw/state
Driver state: SAFE_MODE (Initialization failed due to error: Invariant violated (initialize): latest hash null has no known
manifest initialize/<@https://{{domain}}.com/ngsw-worker.js:2227:27
fulfilled@https://{{domain}}.com/ngsw-worker.js:1772:52 ) Latest
manifest hash: none Last update check: never
Фон приложения
- Угловая версия - 7.2.0
- Версия рабочего сервиса - 7.2.0
- Я проверяю обновления вручную с помощью службы SwUpdate.
Код для проверки обновлений
if (this.updates.isEnabled) {
const appIsStable$ = this.appRef.isStable.pipe(first(isStable => isStable === true));
const every21600Ms$ = interval(6 * 60 * 60);
const every21600MsOnceAppIsStable$ = concat(appIsStable$, every21600Ms$);
// poll the service worker to check for updates
every21600MsOnceAppIsStable$.subscribe(() =>
this.updates.checkForUpdate()
);
}
Мои шаги по исследованию и устранению неполадок на данный момент:
В Chrome
- Сервисный работник зарегистрирован без каких-либо ошибок
- Я посмотрел на вкладку сети и обнаружил, что сервисный работник никогда не скачивает ngsw.JSON.Я видел, как загружался файл «ngsw.json», когда приложение было в Angular 5.0
- Я вижу, об этой же проблеме сообщалось здесь.Я не вижу здесь правильного решения.
- Я попытался выбрать «Обновление при перезагрузке», которое временно решает проблему.После отмены выбора снова появляется та же ошибка.
В Microsoft edge
- Удивительно, но после обновления все работает отлично.
Мои мысли и ожидания
- Поскольку приложение отлично работает в MS edge,Я сомневаюсь, что что-то не так с конфигурацией работника сервиса или с тем, как я запрашиваю обновления
- Я ожидаю увидеть состояние диска как нормальное в / ngsw / state