为什么浏览器在脱机时加载服务工作者并导致“获取脚本时出现未知错误。”?

时间:2017-01-21 18:40:49

标签: service-worker

我使用以下代码注册服务工作者:

echo(json_encode($json_Array, JSON_UNESCAPED_SLASHES ));

我看到我的资源显示在应用缓存中。然后,我转到Chrome中的 // If the browser supports serviceWorker, and we haven't registered any - we'll register our: sw.js .. if ('serviceWorker' in navigator && !navigator.serviceWorker.controller) { navigator.serviceWorker.register('/sw.js').then(function(registrationObj) { console.log('Registration object: ', registrationObj); }).catch(function(error) { // serviceWorker registration failed .. console.log('Registration failed with ' + error); }); } else { console.log('Service worker already registered. Skip registration.') }; 标签,选择Application,点击Service Workers并刷新页面。 该页面打开正常,但我在浏览器控制台中得到了这个:

http://www.screencast.com/t/1uodUTHM5ig

这在Service Worker调试器中:

http://www.screencast.com/t/zmqHMi9RJ

1 个答案:

答案 0 :(得分:1)

可能是因为你没有缓存中的服务工作者(非常自然。它不应该首先被缓存。)所以它回退到标准的http fetch进程,并且当应用程序脱机时它会失败。 / p>

该错误不会阻碍任何事情,也不会影响您的应用的工作方式。它只是告诉你它无法获取脚本。当应用程序离线时,并不是想成功。

您的服务工作者脚本可能是这样构建的;

    event.respondWith(
        caches.match(event.request).then(function (response) {
            if (response) {
                return response;
            }
            // request for service worker .js file falls here as it is not in the cache
            // this fails of course since the app is offline
            return fetch(event.request).then(function (response) {
                return response;
            });
        })
    );