后台同步未启动serviceworker中的事件



我的同步事件未启动,我使用chrome Web服务器localhost:5000上的台式电脑上提供页面,并使用fetch api将数据POST到单独端口上的本地开发服务器localhost:1337。已经关闭了我的wifi、chrome网络服务器以及chrome开发工具中的离线切换,但仍然没有启动我的活动。

这是我在serviceworker.js中同步的代码片段

self.addEventListener('sync', function(event) {   
if (event.tag == 'syncrhronizeOfflineData') 
{     
event.waitUntil(syncrhronizeData());   
} 
}); 
async function syncrhronizeData() {   
console.log('now synchronizing data...');   
//first get all favourites in the localDB and post them to server 
const favData = await window.localforage.getItem('restaurants')
.filter((r) => r.isoffline );   
console.log('favdata', favData); 
}

实际上还没有发布到数据库,试图控制台fafdata但没有收到消息,事件没有被触发。

main.js中我注册serviceworker的代码段

/**  * Service worker functions below  */ 
registerServiceWorker = () => {    
if (!navigator.serviceWorker) return;    
navigator.serviceWorker.register('/service-worker.js')
.then((reg) => {     
if (!navigator.serviceWorker.controller) return;     
if (reg.waiting) {        
updateWorker(reg.waiting);       
return;     
}      
if (reg.installing) {         
trackInstalling(reg.installing);       
return;     
}      
reg.addEventListener('updatefound', () => {      
trackInstalling(reg.installing);     
});    
}).catch(function(err) {      
console.error(err); // the Service Worker didn't install correctly   
});    
//background sync for favourites and reviews offline posting   
if ('SyncManager' in window || 'sync' in reg) {   
navigator.serviceWorker.ready.then(function(swRegistration) { 
console.log('[ServiceWorker] is ready - sync is registered');        
return swRegistration.sync.register('syncrhronizeOfflineData');     
});   
}     
};

我收到一条控制台消息">[ServiceWorker]准备就绪-同步已注册",但在我脱机发布数据并重新连接后,没有从同步事件中收到消息。

窗口对象在ServiceWorker 中不可用

最新更新