如何将基于Reactjs的PWA更新到新版本?

时间:2019-07-10 13:53:26

标签: javascript reactjs progressive-web-apps

我正在开发一个基于reactjs的应用程序。我还对其进行了service-worker设置。在add to home screen之后,应用程序从不检查服务器是否有新更新。

我也尝试过:

window.location.reload(true);

但是它不会更新新版本。

我正在使用Apache服务器来服务build文件夹,并且为了进行更新,我正在获得我的项目的新版本并将其服务在Apache服务器上。

2 个答案:

答案 0 :(得分:0)

两天后我终于解决了我的问题。问题出在field_name文件中。如果页面重新加载并且服务器文件已更改,则必须添加事件侦听器,以便它将更新文件。

因此,我在service-worker函数的serviceWorker.js中添加了此部分:

register

别忘了。重新加载页面时,此侦听器调用。因此,我进行API服务以检查是否有新版本。如果有新版本,则必须重新加载页面以获取新文件。

这个问题非常有用:How to clear cache of service worker?

答案 1 :(得分:0)

这对我有用: src/index.tsx

// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://cra.link/PWA
serviceWorkerRegistration.register({
  onUpdate: (e) => {
    const { waiting: { postMessage = null } = {} as any, update } = e || {};
    if (postMessage) {
      postMessage({ type: 'SKIP_WAITING' });
    }
    update().then(() => {
      window.location.reload();
    });
  },
});