使用Service Worker加载外部文件时出错

时间:2018-11-15 12:14:47

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

我正在使用CDN文件,但是显然我的服务人员没有缓存它们。你会做吗?

The error displayed in the console

服务人员代码:

const version = "0.0.1";
const cacheName = `sfa-${version}`;
self.addEventListener('install', e => {
  e.waitUntil(
    caches.open(cacheName).then(cache => {
      return cache.addAll([
          `/`,
          `/dashboard/`
      ])
          .then(() => self.skipWaiting());
    })
  );
});

self.addEventListener('activate', event => {
  event.waitUntil(self.clients.claim());
});

self.addEventListener('fetch', event => {
  event.respondWith(
    caches.open(cacheName)
      .then(cache => cache.match(event.request, {ignoreSearch: true}))
      .then(response => {
      return response || fetch(event.request);
    })
  );
});

1 个答案:

答案 0 :(得分:0)

也许您试图像这样在navigator.serviceWorker容器上设置onerror处理程序:

// no effect outside service worker script
navigator.serviceWorker.onerror = function() {...};

必须从服务工作者脚本中使用self.onerror设置错误处理程序(self是此处的特殊变量/属性,它引用ServiceWorkerGlobalScope)。仅在错误消息中提供onerror回调。

// inside service worker script
self.onerror = function(message) {
  console.log(message);
};

或者,您可以侦听服务人员的错误事件,其中包括一个包含错误位置的ErrorEvent:

// inside service worker script
self.addEventListener('error', function(e) {
  console.log(e.filename, e.lineno, e.colno, e.message);
});

了解更多信息visit