我正在尝试为 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/