javascript - PWA serviceWorker 并不总是注册
问题描述
我们有内部构建的 CMS,最近我们向其中添加了 PWA。现在,当访问主页 www.ourdomain.com 时一切正常,但是当访问一篇文章时,我们是一个新闻网站,类似于 www.ourdomain.com/section/article 会出现一条消息:
注册 ServiceWorker 失败:获取脚本时收到错误的 HTTP 响应代码 (404)。
首先范围是
./
在那种情况下,ServiceWorker 根本没有注册。
现在我将范围更改为
/
而不是它是为主页注册的,而不是为任何文章注册的。我浏览了文档,阅读了问题和答案,但似乎无法解决这个问题。顺便说一句,PWA 可以很好地安装在移动设备上并且运行良好。
解决方案
您的服务工作者 js 文件最好位于应用程序的公共根目录中,因为您刚刚开始使用 PWA,并且指定正确的范围至关重要,这是从Google PWA 指南安装服务工作者的完美示例。
main.js
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
.then(function(registration) {
console.log('Registration successful, scope is:', registration.scope);
})
.catch(function(error) {
console.log('Service worker registration failed, error:', error);
});
}
service-worker.js
期望您拥有/service-worker.js
并且在您的根目录中,并且如果您开始使用清单,您将呈现与您的start_urlmain.js
相同的范围
您可以在您的应用程序公共根目录上尝试上述安装片段。
推荐阅读
- java - 如何匹配独立于位置的正则表达式模式?
- sas - SAS 最大函数结果
- ruby-on-rails - Docker 映像在 Ubuntu 16.04 上工作,但在 Ubuntu 18.04 上失败
- c# - .NET Core Cast 与实现接口的类型的泛型类型参数接口
- magento - Magento 1.9 站点到 Github
- javascript - JavaScript 按钮值和进度条
- php - 将阅读更多按钮添加到 Wordpress 自定义帖子类型
- html - 使html表格单元格中的所有div与CSS中最高的div具有相同的高度
- sql - 用于 Postgresql 的 Teradata 'like any'
- android - (RxJava2)Single.blockingGet() 不适用于单元测试