0

我有一个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应用程序中得到它。我怀疑ImportScriptinLaravel不知何故不起作用,但我不确定如何调试它。

4

0 回答 0