所有 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 (将#修改为@)