我有一个laravel
项目,我喜欢用它workbox
来为我的应用程序生成服务人员。
所以我安装workbox-cli
了,运行workbox wizard
,我得到:
//workbox-config.js
module.exports = {
"globDirectory": "public/",
"globPatterns": [
"**/*.{json,css,ico,svg,ttf,php,js}"
],
"swDest": "public/sw.js"
};
运行时workbox generateSW
,我会得到:
//public/sw.js
importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.4.1/workbox-sw.js");
self.__precacheManifest = [
{
"url": "content/1/manifest.json",
"revision": "5cd897bcd50eab43f4e1502f17b86cb9"
},
//... and others
].concat(self.__precacheManifest || []);
workbox.precaching.suppressWarnings();
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
之后,我sw.js
在我的注册app.js
:
$(document).ready(function() {
console.log("document ready: ");
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('./sw.js')
.then(function(registration) {
console.log("Service Worker Registered", registration);
})
.catch(function(err) {
console.log("Service Worker Failed to Register", err);
})
}
//...
})
启动页面时,我可以sw.js
在应用程序选项卡中看到已注册和激活。我还检查了缓存存储以及我想要缓存的所有文件。但是不知何故,当我更改为离线时,我仍然无法显示缓存的内容。
我用简单的 1 页html
和 1尝试了相同的代码(上面的所有内容) js
,一切正常。在控制台中,我什至可以看到来自以下的调试消息workbox
:
但我没有在我的Laravel
应用程序中得到它。我怀疑ImportScript
inLaravel
不知何故不起作用,但我不确定如何调试它。