【问题标题】:Service worker file not found in offline mode在离线模式下找不到服务工作人员文件
【发布时间】:2017-01-18 00:39:42
【问题描述】:

我的网络应用是这样的:

我有一个 Apache 服务器在端口 80 上运行,为我的域和不同的子域提供虚拟主机,包括用于 SSL 的端口 443。

我有一个 nodejs 应用程序在端口 5000 上运行。

到我的主域的所有流量都使用 proxypass 从 apache 重定向到 nodejs。

NodeJs 然后加载 Service Worker。

问题:

在在线模式下首次加载应用程序时,它可以正常工作。显示服务工作者已按预期在完整的域消息上注册。即使对于某些 css、js 和 img,它也会返回来自 ServiceWorker 的响应。

但是现在,当我在离线模式下打开同一页面时,服务人员不要玩它来打开网络应用程序。

错误: 1. Uncaught (in promise) TypeError: Failed to fetch(...)。

  1. 获取 service-worker 文件的脚本时出现未知错误。

任何有关这方面正确实施的帮助都会有所帮助。

【问题讨论】:

    标签: javascript node.js apache service-worker


    【解决方案1】:

    您的浏览器将尝试为每个导航请求重新获取与当前 service worker 对应的 JavaScript 文件。您可以在this Stack Overflow answer 中阅读更多相关信息。

    您所看到的记录反映了无法获取您的服务工作者的 JavaScript 的事实(这是有道理的,因为您处于离线状态)。在这种情况下发生的情况是,您的浏览器已经知道并缓存的先前 JavaScript 将被重用,并且您的服务工作者应该按预期运行。可以忽略 DevTools 控制台中有关 service worker 的 JavaScript 无法获取的噪音。

    如果您发现任何与 Service Worker 本身的实际功能相关的故障(例如,检索缓存的资源失败),那么这表明您的实现存在问题。但听起来不像是正在记录的内容。

    【讨论】:

      【解决方案2】:

      确保html 文件被缓存,并且服务工作者脚本位于顶层。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 2018-08-13
        • 2020-01-04
        • 2019-02-24
        • 1970-01-01
        相关资源
        最近更新 更多