Angular Service Worker SwUpdate.available Not Triggered


Answer :

You will probably need to tell the service worker to check the server for updates, I usually use a service for this:

export class UpdateService {    constructor(public updates: SwUpdate) {     if (updates.isEnabled) {       interval(6 * 60 * 60).subscribe(() => updates.checkForUpdate()         .then(() => console.log('checking for updates')));     }   }    public checkForUpdates(): void {     this.updates.available.subscribe(event => this.promptUser());   }    private promptUser(): void {     console.log('updating to new version');     this.updates.activateUpdate().then(() => document.location.reload());    } 

In your app-component.ts:

  constructor(private sw: UpdateService) {     // check the service worker for updates     this.sw.checkForUpdates();   } 

For whatever reason, Angular sometimes does not register the service worker properly. So you can modify `main.ts` :

Replace:

platformBrowserDynamic().bootstrapModule(AppModule); 

With:

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

After every other solution on the stack didn't work, I've started debugging angular's ngsw-worker.js script. I've traced the updating logic and ended up in the "PrefetchAssetGroup" method. I've inserted logging every time method got called and then I realized that it is constantly trying to cache my favicon.ico. I've checked the location of the favicon.ico in my ngsw.json and realized that favicon is not located there. Once I've placed the icon on that location everything started working fine.


Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?