如何正确注册基本的渐进式Web应用服务工作者?

时间:2017-05-19 18:47:48

标签: javascript android service-worker progressive-web-apps

我正在尝试在我的网络应用上注册服务工作者,我在页面底部添加了这个脚本:

<script>
// this part is the service worker:
     if('serviceWorker' in navigator){
        // Register service worker
        console.log('Service Worker is supported');
        navigator.serviceWorkerContainer.register('service-worker.js').then(function(reg){
        console.log("Service Worker registration succeeded. Scope is "+reg.scope);
        }).catch(function(err){
            console.error("Service Worker registration failed with error "+err);
        });
    }
</script>

并在我的服务器上创建了一个文件service-worker.js:

console.log('Started', self);
self.addEventListener('install', function(event) {
  self.skipWaiting();
  console.log('Installed', event);
});
self.addEventListener('activate', function(event) {
console.log('Activated', event);
});
self.addEventListener('push', function(event) {
  console.log('Push message received', event);
});          

当我在chrome developer应用程序上检查它时,我点击Service Workers,没有任何显示。

当我运行灯塔报告时,它给出了一个关于注册服务工作者的错误。

我正在寻找一个简单的设置来为我的渐进式网页应用程序提供下载按钮,这实际上只是一个带有一些图像和几个iframe的简单网页。

我错过了什么?

3 个答案:

答案 0 :(得分:1)

以下代码将注册服务工作者。

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);
  });
}

请查看Google's Introduction to Service worker了解详情。

答案 1 :(得分:0)

此处提供的信息很少。有很多事情可能是错的。 但是尝试在下面的行中添加正斜杠,因为我认为你错过了它 -

在:

navigator.serviceWorkerContainer.register('service-worker.js')

后:

navigator.serviceWorkerContainer.register('/service-worker.js')

答案 2 :(得分:0)

我能够解决我的问题,我能够使用mozilla / serviceworker-cookbook中的those files正确设置一个非常基本的服务工作者。

我删除了旧代码,并在我的服务器上传了这些文件index.jsservice-worker.js,并且我将<script src="./index.js"></script>添加到了我的主页,它运行正常。