使用 webpack 作为构建系统的 react PWA。对于服务工作者,我们使用的是工作箱版本 2.1.2。
拥有一个以 JSON 响应的 GET api http://localhost:5000/dist/abc/123/。注册了路线
'use strict'; importScripts('workbox-sw.prod.js'); const workboxSW = new WorkboxSW({ clientsClaim: true, skipWaiting: true }); workboxSW.LOG_LEVEL = 'debug'; workboxSW.precache([]); workboxSW.router.registerRoute( 'http://localhost:5000/dist/abc/123', workboxSW.strategies.staleWhileRevalidate({ cacheName: 'apis', cacheExpiration: { maxEntries: 50, maxAgeSeconds: 30 * 24 * 60 * 60 }, cacheableResponse: {statuses: [0, 200]} }) ); self.addEventListener('install', () => { self.skipWaiting(); });
确保加载新的服务人员。当 API 调用返回状态为 200 时,缓存存储下没有创建缓存api。因此它也不能离线工作,请参阅No cache "apis" 验证以下内容,
- 请求更正 URL
- 代码流在服务工作者安装阶段命中 registerRoute
- 没有错误消息。调试消息也没有给出任何线索。有什么方法可以启用更多调试吗?
- 服务工作者在适当的范围内注册,调试消息
Service Worker registration successful with scope: http://localhost:8081/dist/
,
接口:http://localhost:5000/dist/abc/123
调用的 API,http://localhost:5000/dist/abc/123/
. 请注意,它是跨站点调用,调用的基本页面是http://localhost:8000
. 如前所述,API 调用成功并返回状态为 200 的响应。
我对 serviceworker/workbox 很陌生。对此的任何指示都非常感谢。