无论我做什么,努力消除所有外部资源,我都无法摆脱“页面无法离线工作”的错误。
这适用于使用 Firebase 实时数据库获取数据的 PWA,一旦数据库中的数据发生更改,Service Worker 就会激活。我的应用程序正在运行,因此与 Firebase 的连接不是我的问题,而是我无法安装该应用程序来解锁其功能。我什至从服务器获取了 firebase 文件并下载它以消除该外部资源。
主页加载时:
function onLoad() {
Notification.requestPermission();
navigator.serviceWorker.register('sw.js');
console.log("Registered!")
}
服务人员:
importScripts('firebase.js');
// Initialize Firebase
var config = {Some data here};
firebase.initializeApp(config);
var database = firebase.database().ref('notification/');
database.on("child_changed", function(snapshot) {
console.log("Activated!")
var notificationInfo = snapshot.val();
self.registration.showNotification(notificationInfo);
});
我希望能够通过进入菜单并单击“安装应用程序”来安装该应用程序。我在 Chrome 开发者控制台中收到错误“页面无法离线工作”。
最佳答案
仅将脚本添加到服务工作线程不会使其离线工作。 Service Worker 是一种不同类型的脚本,称为 Web Worker。它们对实际网页的访问级别与您使用 <script>
的脚本不同。标签会。 Service Worker 主要用于监听 Web 应用程序发出的请求并更改服务 Assets 所涉及的逻辑。要通过 Chrome“离线工作”审核,您需要编写一个 Service Worker 来拦截网络请求,并在请求失败时返回 HTML 文件。
您应该对 Service Worker 可以做什么做一些额外的研究:https://developers.google.com/web/ilt/pwa/introduction-to-service-worker
关于javascript - 渐进式 Web 应用程序 - 页面无法离线工作错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57565442/