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-catch-bust-failing

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)"
        ]
      }
    }
  ]
}

Devtool-screen-shot Devtool-screenshot-2

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, возвращающий исключение при попытке получить его в автономном режиме?

Другие вопросы по тегам