【问题标题】:Can't find serviceWorker in navigator anymore在导航器中找不到 serviceWorker
【发布时间】:2019-02-17 08:02:42
【问题描述】:

自从谷歌浏览器的新更新(版本 69.0.3497.92(官方版本)(64 位))我在导航器中找不到 serviceWorker 服务了。实际上我可以按如下方式注册我的 Service Worker,但现在我收到一个错误,即在导航器中找不到 serviceWorker:

if('serviceWorker' in navigator) {
    /*
    *
    * Register the Service Worker
    *
    * */
    navigator.serviceWorker.register('sw.js').then(function(registration) {
        console.log('Service Worker Registered');
    });

} else console.log('Your browser does not support the Service-Worker!');

我现在如何才能再次使用 Service Worker,或者如何让它在所有 Chrome 版本中再次运行?

【问题讨论】:

  • 谢谢。我也完全忘记了 https 的 req 并且无法弄清楚为什么我的第一个站点工作(https)而我的另一个站点没有(http)。那是几个小时,我再也回不来了。 ????

标签: javascript google-chrome service-worker


【解决方案1】:

通过 HTTPS 提供您的页面或使用 localhost。服务人员requireSecure Context

MDN pageChromium page)。

window.isSecureContext 的值表示[SecureContext] 特征是可见的还是隐藏的。 (这是file:// URL 上的true,serviceWorker API 将可见,但它当然不起作用。)

【讨论】:

  • 哦,是的,你完全正确。我尝试通过本地 IP 访问 Service Worker。使用 localhost 它可以再次工作。
  • 有谁知道如何在我的本地开发机器上的虚拟主机上允许这个?我在不同的 .test 域下有几个项目指向我的本地开发机器。所以我在本地主机上只有 Chrome 看不到它。还是我应该使用另一个 TLD?
【解决方案2】:

如果您在本地为 localhost 以外的域使用虚拟主机,则可以告诉 chrome 将您的自定义域视为“安全”。

在地址栏中:chrome://flags/#unsafely-treat-insecure-origin-as-secure

然后添加您的域,例如http://my-local-dev-domain.test

点击启用并点击重启按钮。

【讨论】:

  • 非常适合我!谢谢
  • 对我来说也是完美的答案
【解决方案3】:

另一个原因可能是在私有模式下运行浏览器

【讨论】:

  • 请检查问题并再次提问,因为给定的信息不足以理解和回答。
  • 嗨,梅德洛。请阅读How to Answer 并尝试将edit 这变成一个清晰而有用的答案。
【解决方案4】:

在用户中转到您的 vscode 设置>扩展选项向下滚动到实时服务器配置

将您的主机设置为 localhost --ScreenShot Set host to local host

现在向下滚动并取消选中使用本地 IP 选项 -- ScreenShot uncheck localIP

转到您的端口 json 设置并将端口设置为 8080 --ScreenShot json setting set port to 8080 上线并检查控制台

【讨论】:

    【解决方案5】:

    代替 http://192.168.1.105:8080/ 转到 http://localhost:8080/ 它对我有用

    【讨论】:

      猜你喜欢
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 2017-09-07
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多