@ angular / pwa сервисный работник не работает над моим уже существующим проектом - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь добавить работника сервиса в мой (уже существующий) проект. но когда я открываю браузер, я вижу, что он не получает работника сервиса.

Вот шаги, которые я выполнил:

  1. Запуск ng add @angular/pwa --project <my-project-name> для моего проекта
  2. Запуск ng build --prod
  3. Запуск приложения с http-server -p 8080 -c-1 dist/<my-project-name>

Теперь приложение работает, и оно получает файл манифеста, но не работник службы:

enter image description here

manifest.webmanifest:

enter image description here

ngsw-config. json:

enter image description here

Когда я попытался выполнить все вышеперечисленные шаги в совершенно новом проекте, он сработал и получил работника сервиса. но не в моем уже существующем проекте.

1 Ответ

1 голос
/ 11 марта 2020

Попробуйте установить для работника службы значение registerImmediately следующим образом:

ServiceWorkerModule.register('ngsw-worker.js', {
  enabled: environment.production,
  registrationStrategy: 'registerImmediately',
})

Если у вас есть сторонняя библиотека, которая использует что-то вроде setInterval, работник службы никогда не будет регистр. Это связано с тем, что по умолчанию registerWhenStable полагается на isStable, что никогда не произойдет с повторяющимися задачами.

приложение никогда не будет стабильным, если вы запустите какой-либо периодический асинхронный режим задача при запуске приложения (например, для процесса опроса, запущенного с помощью setInterval, setTimeout или использования операторов Rx JS, таких как интервал);

...