reactjs - Gatsby 中的服务 worker (react.js)

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

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

最佳答案

如果您将 Gatsby 的 API 用于 Service Worker,则需要在 gatsby-browser.js 中导出函数 registerServiceWorker。问题在于,当您运行 gatsby develop 而不是在浏览器中输入网站时,该函数是在构建过程中触发的。这就是为什么它不会在您的浏览器中(它需要工作的地方)注册 Service Worker 的原因。

要解决您在本地工作时的问题,请在每次在浏览器中输入网站时自行调用导出函数 registerServiceWorker(gatsby-browser 中的 onClientEntry .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
  }
}

关于reactjs - Gatsby 中的服务 worker (react.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61598138/

相关文章:

service-worker - 如何使用嵌套主页(localhost/app)配置 create-react-pwa

angular - firebase 中的 Google 身份验证显示空白屏幕 Progressive Web App

javascript - 如果连续点击两个相同的名字,如何使两个相同的名字保持红色?

javascript - 未捕获的类型错误 : Cannot read property 'name' of undefined - Reactjs

reactjs - 如何从父级在react bootstrap(Dropdown)中设置 Prop

javascript - 更新 Preact 应用程序中的 Pinterest 嵌入

javascript - 如何使用 window.caches 从 window 对象中保存页面?

reactjs - 使用 create-react-app 添加更多 service-worker 功能

javascript - 类型错误 : Failed to register a ServiceWorker: A bad HTTP response code (404) was received when fetching the script

json - 收到无效的 JSON 有效负载。未知名称 click_action