ngsw.json? Ошибка ngsw-cache-bust в автономном режиме приложения Angular 8 PWA
У меня проблема с сервисным работником. Сервисный работник не регистрируется самостоятельно через app.module. Поэтому я вручную регистрирую его в main.ts. Отлично работает в онлайн-режиме. Но когда я переключаю сеть в автономный режим, возникает ошибка ngsw.json? Ngsw-cache-bust. Любое решение будет полезным.
main.ts
platformBrowserDynamic().bootstrapModule(AppModule).then(() => {
if ('serviceWorker' in navigator && environment.production) {
navigator.serviceWorker.register('/ngsw-worker.js');
}
}).catch(err => console.log(err));
ngsw-config.json
{
"$schema": "./node_modules/@angular/service-worker/config/schema.json",
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/manifest.webmanifest",
"/*.css",
"/*.js"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**",
"/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
]
}
}
]
}
3 ответа
Это нормальное поведение в автономном режиме с работником службы Angular. Происходит то, что сервис-воркер пытается
GET
на
ngsw.json
файл с использованием очистки кеша, но он не может получить к нему доступ, потому что приложение отключено. Получение не удастся, и вызов будет выглядеть примерно так, как показано ниже, с уникальным значением:
ngsw.json?ngsw-cache-bust=0.7064947087867681
Он пытается получить конфигурацию сервис-воркера, чтобы увидеть, что нужно обновить, но не может получить доступ к файлу. Однако это не должно мешать сервис-воркеру обслуживать все, что уже кэшировано, и нормально работать до тех пор, пока не вернется в сеть. Когда вы подключитесь к Интернету, вы увидите звонок
ngsw.json
файл через
GET
успех еще раз.
Для всех, кто видит тонны
ngsw.json?ngsw-cache-bust
запросы в сетевой панели ...
Итак ... Я в основном делал DDoS-атаки на себя, используя
appRef.isStable.subscribe(() => swUpdate.checkForUpdate());
код.
Это потому что:
appRef.isStable
является
Observable<boolean>
. Позвонив
checkForUpdate
, Я сделал запрос, в результате чего он изменился с на
false
таким образом стреляя еще раз. Затем, когда он загрузил оба файла, он снова переключился на
true
таким образом цикл повторяется.
Если бы я знал, что приложение по умолчанию проверяет при загрузке самостоятельно ...
Я думаю, твоя проблема в другом. Вы можете показатьngsw-config.json
файл?
В DevTools правильно ли зарегистрирован и активен сервисный воркер?
Что именно не работает должным образом в автономном режиме? Это просто файл ngsw.json, возвращающий исключение при попытке получить его в автономном режиме?