我正在尝试从头开始创建React PWA。到目前为止,我的项目将缩小的文件输出到dist/js
文件夹中。
在我的服务工作者文件中,我正在使用Workbox来预缓存应用程序。到目前为止,这是我的设置:
importScripts("./node_modules/workbox-sw/build/workbox-sw.js");
const staticAssets = [
"./",
"./images/favicon.png",
]
workbox.precaching.precacheAndRoute(staticAssets);
当前,如果我从开发工具> Service Workers中启用offline
,则会引发这些错误,并且应用无法加载:
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
我该如何解决?
答案 0 :(得分:0)
这意味着您的资源没有得到正确的缓存, 您需要先将它们添加到缓存中才能访问, 默认情况下,工作箱会为您执行此操作。 它显示了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);
})
);
});