Javascript 盖茨比网站需要刷新才能查看新数据

Javascript 盖茨比网站需要刷新才能查看新数据,javascript,node.js,gatsby,service-worker,Javascript,Node.js,Gatsby,Service Worker,我在盖茨比上运行了一个博客,每次推送和部署新的博客帖子时,我都需要刷新页面以查看新数据 我尝试按照来自的建议添加一个onServiceWorkerUpdate函数,但这似乎没有起到任何作用 任何人都有解决这个问题的办法,如果有,是否有办法在本地进行测试?当我在盖茨比开发模式下测试时,更改已经自动更新 这是我的gatsby-browser.js文件的全部内容 export const onServiceWorkerUpdateReady = () => window.location.rel

我在盖茨比上运行了一个博客,每次推送和部署新的博客帖子时,我都需要刷新页面以查看新数据

我尝试按照来自的建议添加一个onServiceWorkerUpdate函数,但这似乎没有起到任何作用

任何人都有解决这个问题的办法,如果有,是否有办法在本地进行测试?当我在盖茨比开发模式下测试时,更改已经自动更新

这是我的gatsby-browser.js文件的全部内容

export const onServiceWorkerUpdateReady = () => window.location.reload();
您需要先安装。将您的
gatsby config.js
与以下内容类似:

{
  plugins: [
    {
      resolve: `gatsby-plugin-manifest`,
      options: {
        ...
      }
    },
    'gatsby-plugin-offline'
  ]
}
注意:在这种情况下,插件的顺序很重要

插件将注册一个服务工作者并将其加载到客户端

然后,在您的
gatsby browser.js
文件中,您只需添加:

export const onServiceWorkerUpdateReady = () => {
  const answer = window.confirm(
    `This application has been updated. ` +
      `Reload to display the latest version?`
  )

  if (answer === true)  window.location.reload()
}
此外,您可能需要添加以下hack(在存储库中非常常见):

基本上,它在
onServiceWorkerUpdateReady
刷新时强制整个站点注册服务人员


查看这个有趣的线程,了解一些特定场景的更多注意事项和解决方法:

明白了,谢谢,我会在下班后尝试一下!
export const onRouteUpdate = () => {
  navigator.serviceWorker.register('/sw.js').then((reg) => {
    reg.update();
  });
};