服务工作线程注册失败,并显示:TypeError:无法为范围注册 ServiceWorker

Mar*_*rek 5 build service-worker serve angular angular-service-worker

我在我的角度应用程序中注册服务人员时遇到问题。在我从标准 npm run start 脚本切换之前,一切都工作正常:

"start": "ng serve --aot --port 4200"
Run Code Online (Sandbox Code Playgroud)

使用特定配置编写脚本,我只需替换我的资产、样式和脚本以及环境文件。

"start": ng serve --aot --configuration=development --port 4200
Run Code Online (Sandbox Code Playgroud)

我的问题是,ngserve 的标准配置是什么,所以我可以以类似的方式配置我的配置?或者如果问题出在其他地方,我能做些什么来解决它?如何在开发环境中禁用 Service Worker?serviceWorker: false 在角度 json 中不起作用。(我仍然收到错误)

Mar*_*rek 5

看来我找到了解决这个问题的方法。问题出在我的 app.module 中。

而不是写:

imports: [
  ServiceWorkerModule.register('ngsw-worker.js', {
    enabled: environment.production,
  }),
]
Run Code Online (Sandbox Code Playgroud)

我必须使用以下内容:

imports: [
  ServiceWorkerModule.register('ngsw-worker.js'),
],
providers: [
  {
    provide: SwRegistrationOptions,
    useFactory: () => ({ enabled: environment.production }),
  },
]
Run Code Online (Sandbox Code Playgroud)

我认为这个问题与在服务/构建期间动态更改环境文件有关。有人可以更详细地解释为什么这是一个问题吗?

  • 什么是“SwRegistrationOptions” (3认同)