我在 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 实例会有问题吗?