【问题标题】:Polymer serve and service worker聚合物服务和服务工作者
【发布时间】:2023-04-04 02:52:01
【问题描述】:

我正在尝试开始调试我的 Polymer 应用程序。我通过复制 PolymerCLI Polymer init 的做法手工制作了它。

我不确定是什么在加载 service worker。用于开发的默认设置只是调用console.info() 说它已被禁用用于开发。

当我使用 Polymer serve 在 localhost:8080 上为我的应用程序提供服务时,我收到了 console.info 消息,尽管我实际上没有在哪里加载文件 service-worker.js 。因为应用程序要复杂得多(并且我正在尝试使用 http/2),所以我也有自己的基于节点的服务器。当我运行它然后在浏览器中获取我的应用程序时,service-worker.js 不会被加载和运行。

Polymer serve 正在做什么来启用它?

【问题讨论】:

  • 您使用的是哪个polymer init 模板?例如。 polymer init applicationpolymer init app-drawer-template
  • 我手工制作了这个应用程序,因为它在聚合物 cli 创建之前就已经存在。我在另一个目录中创建了一个标准应用程序并复制了相应的文件(service-worker.js、sw-precache-config.js)并使用其余文件作为指南来编辑我已经拥有的内容。

标签: polymer service-worker progressive-web-apps polymer-cli


【解决方案1】:

可能是使用相同源(例如localhost:8080)的不同应用程序注册并安装了服务工作者。

在 Chrome Canary 中打开应用程序面板以检查/删除 service worker。

如果您无法访问 Chrome Canary,请打开 chrome://serviceworker-internals,找到与您的应用匹配的范围,然后点击取消注册serviceworker-internals 顶部还有一个选项,可让您打开 DevTools 窗口并在 SW 上暂停 JS。启用该选项,您将能够看到正在运行的软件。

【讨论】:

  • 可能就是这样,虽然我不确定如何检查,因为我还没有安装金丝雀(我正在运行 Debian)。我用聚合物初始化创建了一个虚拟应用程序,只是为了看看它会做什么。我还创建了一份到谷歌商店应用程序的副本来查看它。其中一个可能已经做到了,但是为什么控制台日志会响应我的/service-worker.js
  • @akc42 查看我编辑的答案底部的工作流程
  • 谢谢。我“认为”我现在明白了。看起来,虚拟应用程序中的代码在位于 localhost:8080 时注册了 url /service-worker.js。该服务工作者代码与我的应用程序中的代码相同,因为我只是复制了它,因此无法说出正在使用哪个版本。我现在唯一的困惑是我认为服务人员只是 https,这是在 localhost http 连接上激活的。
  • @akc42 服务工作者必须通过 HTTPS 运行这一点大部分是正确的,但 localhost 是少数例外之一。 spec 表示“Devtools 可以放松开发的 [安全] 限制(文件://、本地主机等)”。
猜你喜欢
  • 2014-12-09
  • 2017-05-11
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 1970-01-01
相关资源
最近更新 更多