PWA后台同步注册失败是怎么回事?

南宫梓辰 阅读 19

我在尝试给PWA加上后台同步功能,但调用register()时一直报错,说“Background Sync is not supported”。明明我是在本地localhost下测试的,Chrome也支持啊?

这是我的service worker注册后的相关代码:

navigator.serviceWorker.ready.then(registration => {
  return registration.sync.register('sync-posts');
}).catch(err => {
  console.error('Sync registration failed:', err);
});

顺便附上我页面里引入的样式,虽然应该没关系……

.offline-badge {
  background: #ff6b6b;
  color: white;
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 12px;
}
我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
设计师志丹
这问题一般是 Service Worker 没注册成功就急着调 sync 了。先确保 SW 真的 ready 再调 register,或者直接 catch 看一下 registration 对象是不是 undefined。

另外检查下 Chrome 版本够不够新,低版本 Chrome 的 Background Sync 是实验性功能,得手动开 flag。

还有种可能是你在 devtools 的 Application 面板里把 Service Worker 停用了,这种情况下 ready promise 会一直 pending。

核心排查点:打开 devtools 的 Console 和 Application 面板,看 SW 状态和具体报错信息。
点赞
2026-03-11 18:01