Javascript 标记为冗余的服务工作人员

Javascript 标记为冗余的服务工作人员,javascript,promise,service-worker,service-worker-events,Javascript,Promise,Service Worker,Service Worker Events,服务工作者将不会安装,并保持其状态为冗余。刷新页面将在冗余状态灰色指示器中添加更多服务人员 我尝试了在self.addEventListener函数参数中安装console.login,它成功了。服务人员被标记为已激活且正在运行的绿色指示灯 下面将使服务人员变得多余 self.addEventListener("install", function (event) { event.waitUntil( caches.open(CACHE_NAME).then(functi

服务工作者将不会安装,并保持其状态为冗余。刷新页面将在冗余状态灰色指示器中添加更多服务人员

我尝试了在self.addEventListener函数参数中安装console.login,它成功了。服务人员被标记为已激活且正在运行的绿色指示灯

下面将使服务人员变得多余

self.addEventListener("install", function (event) {
    event.waitUntil(
        caches.open(CACHE_NAME).then(function (cache) {
            var newImmutableRequests = [];
            return Promise.all(
                immutableRequests.map(function (url) {
                    return caches.match(url).then(function (response) {
                        if (response) {
                            return cache.put(url, response);
                        } else {
                            newImmutableRequests.push(url);
                            return Promise.resolve();
                        }
                    });
                })
            ).then(function () {
                return cache.addAll(newImmutableRequests.concat(mutableRequests));
            });
        })
    );
});
下面的方法可以工作,但它不缓存文件

self.addEventListener("install", function (event) {
    console.log("installed");
});

我希望安装service worker并能够缓存文件,但它会进入冗余状态。

检查控制台是否有错误。如果出现故障,服务工作者将进入冗余状态

您的代码中至少有一个问题:

return caches.match(url).then(function (response) {
应该是没有s的缓存,对吗?caches是全局缓存API接口,而Cache在代码中是引用单个缓存实例的变量

<>同时,为了便于在代码中查找bug,请考虑添加错误处理。您的代码中没有任何Promise.catch处理程序,因此它只能吞下所有错误: