5

我在 main.ts 和 app.module.ts 中都注册了 ngsw-worker.js。这个可以吗?

比如它会创建 2 个服务工作者实例吗?Service Worker 会不会有冲突?

main.ts

platformBrowserDynamic().bootstrapModule(AppModule).then(() => {
  if ('serviceWorker' in navigator && environment.production) {
    navigator.serviceWorker.register('/ngsw-worker.js');
  }
}).catch(err => console.log(err));

app.module.ts

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    ServiceWorkerModule.register('/ngsw-worker.js', {enabled: environment.production}),
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {
}

由于这个原因,我在 main.ts 中注册它。

它已在 app.module.ts 中注册,因为默认的 Angular-cli SW 项目将其添加到此处。


在 main.ts 和 app.module.ts 中注册 Service Worker 后,我将 Firebase Cloud Messaging sdk 添加到 Service Worker 实例。

navigator.serviceWorker
          .ready
          .then((registration) => this.firebase.messaging().useServiceWorker(registration));

简而言之,注册两个 ngsw-worker.js 实例会有问题吗?

4

0 回答 0