首页 > 解决方案 > cache.addAll 无法缓存文件 exept .html

问题描述

我的 serviceWorker.js 有一个非常令人不安的问题。在安装时,当我尝试缓存文件时,我只能添加我的 .html 文件,所有其他文件都会触发我的 catch 错误。


self.addEventListener('install', function (evt) {
    console.log('install ', evt);
    caches.open(cacheName)
        .then(function (cache) {
            cache.addAll([
                'index.html',
                'expertises',
                'websocket',
                'results',
                'form',
                'utils.js'
            ]).catch(err => console.error(err));
        });
});

在此示例中 utils.js 未添加到缓存中,并触发此错误TypeError: Request failed

我正在使用 TS,但这些 js 文件存在于谷歌浏览器的网络选项卡中

编辑:在网络选项卡中,util.js 触发 404

标签: reactjsservice-worker

解决方案


解决了。对于任何有同样问题的人。

TypeError: Request failed, 当资源的范围不是好的时候出现。

您可以使用以下命令检查您的 SW 范围:


if (navigator.serviceWorker) {
    navigator.serviceWorker.register('../src/serviceWorker.js')
        .then(registration => console.log('scope ', registration.scope))
        .catch(err => console.error(err));
}



对我来说,我的 SW 范围是,/src但我的文件在../src.


推荐阅读