【问题标题】:Service worker in Gatsby (react.js)Gatsby 中的服务工作者 (react.js)
【发布时间】:2020-05-04 17:29:42
【问题描述】:

我正在尝试为 gatsby 应用程序设置自定义服务人员。我的应用程序的构建过程大约需要 7 分钟,并且 service worker 仅在生产模式下注册,因此我无法快速开发。例如,添加一个新的console.log 并检查它需要几分钟。 我可以在开发模式下以某种方式测试 Service Worker 吗?

【问题讨论】:

标签: reactjs service-worker progressive-web-apps gatsby


【解决方案1】:

如果你为 Service Worker 使用 Gatsby 的 API,你需要在 gatsby-browser.js 中导出函数 registerServiceWorker。问题是在构建过程中运行gatsby develop而不是在浏览器中输入网站时触发了此功能。这就是为什么它不会在您的浏览器中注册 Service Worker(它需要在哪里工作)。

要解决您在本地工作时遇到的问题,请在每次在浏览器中进入网站时自己调用导出函数registerServiceWorkeronClientEntry in gatsby-browser.js)。

我建议也将它包装在 if 语句中,以便仅在您在本地使用它时调用它。我的 .env 文件中有一个变量 ENABLE_LOCAL_SW = true

// gatsby-browser.js

export const onClientEntry = () => {
  if (process.env.ENABLE_LOCAL_SW) {
    registerServiceWorker();
  }
};

export const registerServiceWorker = () => {
  if (typeof window !== 'undefined') {
    // Do magic
  }
}

【讨论】:

    猜你喜欢
    • 2021-06-26
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多