47
service-worker.js:1 GET http://localhost:8080/service-worker.js net::ERR_FILE_EXISTS

这是我在注册服务人员后每次刷新时都会遇到的错误。我已确保 service-worker.js 文件存在于根目录中。服务人员也已注册并且工作正常。但我仍然不断收到这个错误。我也在本地主机上工作。

这是我的 service-worker.js 文件:

console.log("SW startup");

var CACHE_NAME = "my_cache";
var urlsToCache = [
  './',
  './css/style.css',
  './js/script.js'
];

self.addEventListener('install', function(event) {
  // Perform install steps
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function(cache) {
        console.log('Opened cache');
        return cache.addAll(urlsToCache);
      })
  );
});

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.open(CACHE_NAME).then(function(cache) {
      return cache.match(event.request).then(function (response) {
        return response || fetch(event.request.clone()).then(function(response) {
          console.dir(response);
          console.log('hi');
          cache.put(event.request.clone(), response.clone());
          return response;
        });
      });
    })
  );
});

script.js 文件:

if (navigator.serviceWorker) {
    console.log("ServiceWorkers are supported");


    navigator.serviceWorker.register('service-worker.js')
        .then(function(reg) {
            console.log("ServiceWorker registered ◕‿◕");
            console.dir(reg);
        })
        .catch(function(error) {
            console.log("Failed to register ServiceWorker ಠ_ಠ");
            console.dir(error);
        });
}
4

1 回答 1

32

我看到了同样的问题。可以放心地忽略它。

此错误跟踪从 Chrome 中删除噪音:https ://code.google.com/p/chromium/issues/detail?id=541797

它应该从 Chrome 50 开始上线。

从线程:

由于未找到更新,改进了服务人员保释的错误代码

ServiceWorkerWriteToCacheJob 是负责获取和编写更新脚本的 URLRequestJob。当它想要中止更新时,它会因网络错误而失败,因为新脚本与旧脚本相同。

目前,这会导致在 DevTools 控制台和网络日志中出现 ERR_FAILED 错误,这令人困惑且难以调试,因为实际网络错误也会发生该错误。此补丁将错误更改为 FILE_EXISTS,因此更清楚作业“失败”的原因。

于 2015-10-27T10:05:55.687 回答