微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

所有 Service Worker 都无法注册“TypeError:获取脚本时发生未知错误” – 但仅限于 Chrome

如何解决所有 Service Worker 都无法注册“TypeError:获取脚本时发生未知错误” – 但仅限于 Chrome

我的笔记本电脑上的 Google Chrome 副本无法注册所有服务人员。如果我加载任何具有离线功能的网站,devtools 控制台输出

Uncaught (in promise) TypeError: Failed to register a ServiceWorker for scope ('https://googlechrome.github.io/samples/service-worker/basic/') with script ('https://googlechrome.github.io/samples/service-worker/basic/service-worker.js'): An unkNown error occurred when fetching the script.

请注意,上面的错误来自https://googlechrome.github.io/samples/service-worker/basic/,这是一个技术演示由google制作,专门针对service worker,专门针对chrome,不是我创建的。另一件有趣的事情是,从本地主机获取的服务工作者可以毫无问题地注册。这表明存在 SSL 问题(我认为),但上述网站的主机再次是 github 页面(我的浏览器有什么办法不信任 github 页面吗?我还没有找到任何证据来支持这一点)。

如果我在同一站点的控制台中直接输入 navigator.serviceWorker.register("https://googlechrome.github.io/samples/service-worker/basic/service-worker.js");,我会得到同样的错误

这不仅仅是一条控制台消息:如果我加载了网站,然后断开与互联网的连接,然后刷新页面,浏览器会报告“无互联网”并且不加载网站。如果我使用 devtools>Application>Service Workers 离线模式,也会发生同样的事情。这表明 service worker 注册失败。但是,Service Workers devtools 选项卡确实显示了 Service Workers 存在 - 它只是将它们列为“冗余”而不是“活动和运行”。奇怪的是,“收到的时间”是 1970-01-01。

image of service worker status in devtools

我在 MacOS Big Sur 上使用 Google Chrome Version 89.0.4389.114 (Official Build) (x86_64)。在其他浏览器(Safari、Firefox 和任何其他计算机/移动设备上的任何浏览器)上,不会发生此错误。自从我第一次注意到错误以来,我已经多次重新启动 Chrome,并从那时起更新了一次。都没有修好。

我知道几个类似的 SO 问题(例如 herehere),但他们都接受了有关网站创建者如何修复其网站中的错误的答案。这个错误出现在我没有创建的网站上,似乎特定于我的浏览器(我没有以任何方式篡改)。这让我抓狂的主要原因是我真的很喜欢 Chrome 的开发工具,我想将它们用于当前的 PWA 项目。

如果任何熟悉 Chrome 内部工作原理的人都知道可能导致这种情况的原因,或者如果过去有人解决了这个问题,我将永远欠你的债。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。