我的网络应用是这样的:
我有一个在端口80上运行的Apache服务器,我的域和不同子域的虚拟主机,包括SSL的端口443。
我在端口5000上运行了一个nodejs应用程序。
我的主域名的所有流量都使用proxypass从apache重定向到nodejs。
然后NodeJ加载服务工作者。
问题:
在线模式下首次加载应用程序时,它正常工作.Shows Service worker按预期注册完整的域消息。即使对于某些css,js和img,它也会从ServiceWorker返回响应。
但现在当我在离线模式下打开同一页面时,服务工作人员不会将其作为打开网络应用程序的一部分。
错误: 1.未捕获(承诺)TypeError:无法获取(...)。
在这方面提供正确实施的任何帮助都会有所帮助。
答案 0 :(得分:7)
您的浏览器将尝试为每个导航请求重新获取与当前服务工作者相对应的JavaScript文件。您可以在this Stack Overflow answer中了解更多相关信息。
您看到记录的内容反映了以下事实:您的服务工作者的JavaScript无法获取(这是有道理的,因为您已离线)。在这种情况下会发生的情况是,您的浏览器已经知道并缓存的先前JavaScript将被重用,您的服务工作者应该按预期运行。可以忽略DevTools控制台中有关服务工作者未能获取的JavaScript的噪音。
如果您发现与服务工作者本身的实际功能相关的任何故障(例如,检索缓存资源失败),则表明您的实施存在问题。但它听起来并不像是记录了什么。
答案 1 :(得分:0)
确保缓存html
个文件,并确保服务工作者脚本位于顶层。