gpt4 book ai didi

reactjs - 如何在 Service Worker 中缓存 React 应用程序

转载 作者:行者123 更新时间:2023-12-05 06:26:13 29 4
gpt4 key购买 nike

我正在尝试从头开始创建 React PWA。到目前为止,我的项目将缩小的文件输出到 dist/js 文件夹。

在我的服务 worker 文件中,我使用 Workbox 来预缓存应用程序。到目前为止,这是我的设置:

importScripts("./node_modules/workbox-sw/build/workbox-sw.js");

const staticAssets = [
"./",
"./images/favicon.png",
]

workbox.precaching.precacheAndRoute(staticAssets);

目前,如果我从开发工具 > Service Workers 启用离线,它会抛出这些错误并且应用程序无法加载:

3localhost/:18 GET http://localhost:8080/js/app.min.js net::ERR_INTERNET_DISCONNECTED
localhost/:1 GET http://localhost:8080/manifest.json net::ERR_INTERNET_DISCONNECTED
3:8080/manifest.json:1 GET http://localhost:8080/manifest.json net::ERR_INTERNET_DISCONNECTED
logger.mjs:44 workbox Precaching 0 files. 2 files are already cached.
5:8080/manifest.json:1 GET http://localhost:8080/manifest.json net::ERR_INTERNET_DISCONNECTED

我该如何解决这个问题?

最佳答案

这意味着您的资源没有被正确缓存,您需要在访问之前将它们添加到缓存中,工作箱默认为你做。它显示缓存的 2 个文件,因为它们出现在您的数组中,预期结果对所有剩余的人也这样做。

const staticAssets = [
"./",
"./images/favicon.png",
"./js/app.min.js",
"./manifest.json",
{ url: '/index.html', revision: '383676' }
]

你可以尝试添加事件监听器,

self.addEventListener('install', event => {
console.log('Attempting to install service worker and cache static assets');
event.waitUntil(
caches.open("staticCacheName")
.then(cache => {
return cache.addAll(staticAssets);
})
);
});

self.addEventListener('fetch', function(event) {
event.respondWith(caches.match(event.request)
.then(function(response) {
if (response) {
return response;
}
return fetch(event.request);
})
);
});

关于reactjs - 如何在 Service Worker 中缓存 React 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56422713/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com