服务人员:捕获(承诺)错误类型错误:请求方案“数据”不受支持

时间:2018-10-01 05:17:27

标签: javascript caching promise service-worker service-worker-events

发生的事情是在网站的第一次加载时进行的,并且缓存没有遇到任何问题。但是,在刷新(正常重载)时,Fetch事件会遇到问题,并在控制台日志中显示该问题。

  

未捕获(承诺)TypeError:请求方案“数据”不受支持       在self.addEventListener.e.respondWith.fetch.then.caches.open.then.cache上

我意识到,在重新加载时,它会获取File.SetLastWriteTimeUtc(path, DateTime.UtcNow);,这会导致控制台日志中的错误。

format data:[<mediatype>][;base64],<data>

我想避免此错误,但我不知道如何。

1 个答案:

答案 0 :(得分:0)

一个好的做法是在发送获取请求之前打开缓存,以确保您的缓存存在。如果网络出现故障,您可以回退到缓存响应。以下代码将更新您的缓存:

e.respondWith(
  caches.open(cacheName).then(cache => {
    cache.match(e.request).then(cacheResponse => {
      const networkFetch = fetch(e.request).then(networkResponse => {
        cache.put(e.request, networkResponse.clone());
        return networkResponse
      });

      return cacheResponse || networkFetch;
    });
  }).catch(error => {
    console.log('error in cache open: ', error)
  })
)