Angular 7 - service worker not registered

前端 未结 3 835
余生分开走
余生分开走 2020-12-29 05:15

I did everything as written in \"https://angular.io/guide/service-worker-getting-started\" to make my application PWA.

Used exactly this commands:

n         


        
相关标签:
3条回答
  • 2020-12-29 05:27

    artemisian's solution works but it's a hack, and you're not sure if it will work in the future.

    A better solution

    There is a 'registrationStrategy' setting which has to do with angular waiting with the registration until your app is 'stable'. Now if you have a bunch of stuff loading while starting your app (authenticating and building websocket connections) angular apparently thinks your app never is stable.

    Fortunately you can override the registrationStrategy to registerImmediately like so:

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

    See for the documentation here

    After this the serviceworker will load, whatever the state of your app. There's also an option to pass an observable, so you can have it loaded whenever you think it's right.

    0 讨论(0)
  • 2020-12-29 05:44

    It seems the service worker setup is broken for the @angular/cli@7.1.4:

    As a temporary solution you can register it manually yourself by modifying the file src/main.ts (Once fixed you can remove the manual service worker registration.):

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

    PS: Github issue created: https://github.com/angular/angular-cli/issues/13351

    PS: Github issue #2 created: https://github.com/angular/angular-cli/issues/15025

    0 讨论(0)
  • 2020-12-29 05:52

    Be aware that browsers does not register service workers for HTTP unless it's localhost.

    Running http-server, the console showed that the application will be served from the following URLs: http://10.40.59.29:8080, http://127.0.0.1:8080, http://192.168.255.209:8080.

    Don't forget to replace the IP address to localhost like http://localhost:8080/

    0 讨论(0)
提交回复
热议问题