jquery ServiceWorker向FetchEvent.respondWith()传递了一个承诺,该承诺以非响应值“undefined”解析

xmakbtuz  于 2022-11-03  发布在  jQuery
关注(0)|答案(2)|浏览(131)

如果用户试图在脱机时打开未缓存的页面,我的服务工作人员应运行以下方法unableToResolve(),但页面显示:
无法连接Firefox无法建立到服务器的连接
在控制台中,我收到错误:
加载“www.examplesite.co.uk”失败。ServiceWorker向FetchEvent.respondWith()传递了一个承诺,该承诺使用非响应值“未定义”解析。
我的服务工人运行良好,否则,所以我不知道这可能是什么。

self.addEventListener("fetch", function(event) {
  var request = event.request;
  if (request.method !== 'GET') {
    return;
  }

  event.respondWith(
    caches.match(event.request).then(function(cached) {
      var networked = fetch(event.request).then(fetchedFromNetwork, function() {
        return cached;
      }).catch(unableToResolve);
      return networked;

      function fetchedFromNetwork(response) {

        var cacheCopy = response.clone();
        caches.open(version + 'offlinemode').then(function add(cache) {
          cache.put(event.request, cacheCopy);
        });
        return response;
      }

      function unableToResolve() {
        return new Response('<h1>Service Unavailable</h1>', {
          status: 503,
          statusText: 'Service Unavailable',
          headers: new Headers({
            'Content-Type': 'text/html'
          })
        });
      }
    })
  );
});
aemubtdh

aemubtdh1#

在我朋友的帮助下,我们解决了这个问题。我们需要在它进入unableToResolve()之前抛出一个错误:“)

event.respondWith(
    caches.match(event.request).then(function(cached) {
        var networked = fetch(event.request).then(fetchedFromNetwork, function(){if(cached === undefined){throw new Error('Network response was not ok.');}return cached;}).catch(unableToResolve);
        return networked;

        function fetchedFromNetwork(response) {
          var cacheCopy = response.clone();
          caches.open(version + 'offlinemode').then(function add(cache) {
              cache.put(event.request, cacheCopy);
          });
          return response;
        }
        function unableToResolve () {
          return new Response('<h1>Service Unavailable</h1>', {
            status: 503,
            statusText: 'Service Unavailable',
            headers: new Headers({
              'Content-Type': 'text/html'
            })
          });
        }
      })
  );
gfttwv5a

gfttwv5a2#

在这里看到我的答案:问题是CORS仅在某些路线上活动,而不是在服务器上全局活动。
https://stackoverflow.com/a/74286683/7486794

相关问题