Hey I am trying to program my first pwa and got the following problem:
when I start my web app I get the following error:
Site cannot be installed: no matching service worker detected. You may need to reload the page, or check that the service worker for the current page also controls the start URL from the manifest
I think my manifest url is right because of this link
manifest.json
"start_url": ".", "display": "standalone", "orientation": "portrait", "theme_color": "#29BDBB", "background_color": "#29BDBB"
and I register my sw like this:
if ('serviceWorker' in navigator) { navigator.serviceWorker.register('./sw.js').then(function(reg) { console.log('Successfully registered service worker', reg); }).catch(function(err) { console.warn('Error whilst registering service worker', err); }); }
I got my sw from here
So I am trying to make a simple web app which I can host with firebase.
Whats the problem? Thanks for your help
Place the service worker script file at the root of your website and set start_url
to /
, or place it wherever you want and use the scope
property and the Service-Worker-Allowed
HTTP header as in my other answer.
Just in case this happens to anyone else using Angular8+. You may need to change your registration strategy to:
ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, registrationStrategy: 'registerImmediately' }),
By default, this is set to registerWhenStable
, which is when there are no pending tasks, things like setTimeout()
, etc. By changing it to registerImmediately
, it will register your service worker as soon as it possibly can.
Just thought I'd share this and add it here, as this lost me a few days trying to work it out.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With