【问题标题】:@angular/pwa service worker not working on my already existing project@angular/pwa 服务人员不在我已经存在的项目上工作
【发布时间】:2020-03-05 16:14:43
【问题描述】:

我正在尝试将服务人员添加到我的(已经存在的)项目中。 但是当我打开浏览器时,我发现它没有得到服务人员。

这些是我遵循的步骤:

  1. 在我的项目中运行 ng add @angular/pwa --project <my-project-name>
  2. 正在运行ng build --prod
  3. 使用http-server -p 8080 -c-1 dist/<my-project-name> 运行应用程序

现在,应用程序正在运行,它确实获得了清单文件,但没有获得 service worker:

manifest.webmanifest:

ngsw-config.json:

当我尝试在一个全新的项目上执行上述所有步骤时,它确实有效并得到了服务人员。但不在我已经存在的项目中。

【问题讨论】:

  • 尝试将 Service Worker 设置为 registerImmediately,例如 ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, registrationStrategy: 'registerImmediately' })。如果您包含使用 setInterval 之类的第三方库,则默认情况下 SW 永远不会注册。
  • @abraham 工作。谢谢

标签: javascript angular browser service-worker progressive-web-apps


【解决方案1】:

尝试将 service worker 设置为 registerImmediately,如下所示:

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

如果您有一个使用 setInterval 之类的第三方库,则服务工作者将永远不会注册。这是因为默认的registerWhenStable 依赖于isStable,这在重复任务中永远不会发生。

如果您在应用程序启动时启动任何类型的循环异步任务(例如对于轮询过程,以 setInterval、setTimeout 或使用 RxJS 操作符(如 interval)启动),应用程序将永远不会稳定;

【讨论】:

  • 我花了大约 5 - 8 个小时来尝试完成这项工作,在网上到处搜索,而您的回答正是解决了我的问题。我无法开始告诉你我多么感谢你在这里的回答!谢谢
猜你喜欢
  • 2018-11-08
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2021-09-22
  • 2021-04-15
  • 1970-01-01
  • 2011-12-10
相关资源
最近更新 更多