The name of the question says it all.
if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/react-redux/sw.js').then(() => { console.log('registered'); }, err => console.log(err)); }
EDIT
The root of the problem seems to be the way
navigator.serviceWorker.register('/react-redux/sw.js')
if i move the sw code so i have
navigator.serviceWorker.register('swRoot.js').then(() => {
then everything works correctly. I tried almost everything I can think of above, from dropping the leading slash in / react -redux to adding {scope: from './' , '/' , '/react-redux' , and no one worked (with some causes of errors).
Does anyone know what configuration magic is to be able to download a service worker from somewhere other than the root of your domain?
and then all my sw.js
self.addEventListener('install', function(event) { console.log('hello'); try { console.log('typeof System in install', typeof System); } catch(e){} console.log('caching'); event.waitUntil( caches.open('v1').then(function(cache) { console.log('caching - getting'); return cache.addAll([ '/react-redux/a.js' ]); }).catch(function(error){ console.log('error', error) }) ); }); console.log('ADDING FETCH') self.addEventListener('fetch', function(event) { console.log('fetching ->', event.request); event.respondWith( caches.match(event.request) .then(function(response) {
I never get the console.log('fetching ->', event.request); message console.log('fetching ->', event.request); . I even added this nonsense to try to get the problem.
setTimeout(() => fetch('/react-redux/foo.css').then(r => console.log(r)), 1000); setInterval(() => fetch('/react-redux/foo.css').then(r => console.log(r)), 5000);
I see that sampling events are being executed, but the service worker never says that he hits these event handlers.
In addition, I receive a notification that SW is registered, and when I update sw.js, close and reopen it, I see all the logging instructions indicating that the installation is correct.