在Service Worker安装侦听器中,为什么获取返回TypeError:无法获取?

时间:2018-02-21 18:28:58

标签: service-worker sw-precache

使用sw-precache实用程序,我创建了一个在刷新页面时可以工作的服务工作者。但最初,fetch调用会在一个文件上返回TypeError: Failed to fetch,这似乎取消了其余的文件。刷新获取更多文件,刷新几次直到获取所有文件,然后服务工作者正常工作。即使使用缓存破坏程序,每个URL每次都可以正常加载。所有来电均为https://localhost:9001,并且是直接get来电。共有17个文件。

以下是代码段:

self.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open(cacheName).then(function(cache) {
      return setOfCachedUrls(cache).then(function(cachedUrls) {
        return Promise.all(
          Array.from(urlsToCacheKeys.values()).map(function(cacheKey) {
            // If we don't have a key matching url in the cache already, add it.
            if (!cachedUrls.has(cacheKey)) {
              var request = new Request(cacheKey, {credentials: 'same-origin'});
              return fetch(request).then(function(response) {
                // Bail out of installation unless we get back a 200 OK for
                // every request.
                if (!response.ok) {
                  throw new Error('Request for ' + cacheKey + ' returned a ' +
                    'response with status ' + response.status);
                }

                return cleanResponse(response).then(function(responseToCache) {
                  return cache.put(cacheKey, responseToCache);
                });
              }).catch(function(e) {
                  throw new Error('fetch error: ' + e);
              });
            }
          })
        );
      });
    }).then(function() {

    })
  );
});

我尝试将keepalive:true,headers:{"Access-Control-Allow-Origin": "*"}添加到请求中,但得到的结果相同。

似乎请求很快就会失败,我已经看到请求需要花费一秒多的时间才能响应。也许有办法设置超时?

在chrome dev工具网络标签中,它显示红色的失败尝试,其中(canceled)状态和左侧的小服务工作者图标。

似乎在FireFox中运行良好。 Chrome遇到了麻烦。

0 个答案:

没有答案