首页 > 解决方案 > Service Worker 未注册或无法控制启动 URL

问题描述

Chrome 清单选项卡:

在此处输入图像描述

我也没有看到任何服务工作者,Chrome 服务工作者选项卡:

在此处输入图像描述

这是我的 manifest.json:

{
    "short_name": "shortname",
    "name": "Full Name",
    "icons": [
      {
        "src": "img/logo.svg",
        "type": "image/svg",
        "sizes": "512x512"
      }
    ],
    "start_url": "/",
    "background_color": "#cc2366",
    "display": "standalone",
    "scope": "/",
    "theme_color": "#cc2366"
}

app.module.ts

...
import { ServiceWorkerModule } from '@angular/service-worker';
import { AppComponent } from './app.component';
import { environment } from '../environments/environment';

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

.angular-cli.json

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    ...
  },
  "apps": [
    {
      ...
      "serviceWorker": true,
      ...
    }
  ],
  "e2e": {
    ...
  },
  "lint": [
    ...
  ],
  "test": {
    ...
  },
  "defaults": {
    ...
  }
}

但是我可以https://myrooturl/ngsw-worker.js通过浏览器访问。

我错过了什么?

(光盘:一些不相关的代码以虚线显示)

标签: angularangular5service-workerprogressive-web-apps

解决方案


你的语法是错误的。它应该是。

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

推荐阅读