我正在尝试从名为ServiceWorker
的Webroot子目录中获取一个appdashboard
来工作... serviceworker会在chrome://serviceworker-internals/
上安装,运行并可见,但其{{1 }}为空,因此我无法与其通信。如果我不限制范围(并将我的serviceworker文件移动到webroot),则可以正常工作。
Navigator.serviceWorker.controller
我尽可能简化了 const serviceWorker = navigator
.serviceWorker
.register('appdashboard/dashboard_serviceworker.js', { scope: 'http://localhost/appdashboard/' })
.then((swReg) => {
console.log('[Service Worker (Dashboard)] service worker is registered', swReg);
swRegistration = swReg;
if (navigator.serviceWorker.controller != null) {
console.log("controller is working")
}
if (navigator.serviceWorker.controller == null) {
console.log("controller is NULL!") // <<<< its null :(
}
})
来诊断问题,即使有这个白手起家的人,控制器也为空
serviceworker
答案 0 :(得分:0)
我正在使用MVC
路由,因此我的URL路径为localhost/dashboard
,但文件结构为/appdashboard/
,现在我从/appdashboard/
webroot和控制器初始化。
这是使我走上正确道路的那条线。
记住范围(包括范围)时,将页面的位置用作其范围 基础。或者,如果此代码包含在位于 example.com/product/description.html,“./”的范围表示 服务工作者仅适用于以下资源 example.com/product。