删除service-worker.js(特殊情况)

时间:2019-07-04 11:23:06

标签: amazon-cloudfront create-react-app gatsby netlify

特殊情况下我的意思是,当我使用create-react-app时,我需要删除旧的服务程序。 我应该在使用cra时将其删除,然后再将整个网站切换为使用gatsby。 有了盖茨比,我知道我可以像这样删除服务人员

 //'gatsby-plugin-offline',
'gatsby-plugin-remove-serviceworker'

但是很久以前,当我的网站使用CRA并且在其设备上安装了service worker时,他们就在用户的浏览器上访问了我的网站。然后我很愚蠢,在搬到盖茨比之前,我并没有罢免CRA的服务人员。 因此,现在,我的网站使用的是gatsby,我已将其配置为删除服务工作者,如上面的代码。但这并不会删除CRA的服务人员。 在gatsby-browser.js上,我尝试了此代码,但无效。

export const onClientEntry = async () => {
    if ('serviceWorker' in navigator) {

        navigator.serviceWorker.getRegistrations().then(function(registrations) {

        for(let registration of registrations) {
            console.log('Service Worker registration removed: ');
                registration.unregister()

        }}).catch(function(err) {

            console.log('Service Worker registration failed: ', err);

        });
    }
} 

相关信息: 我的CRA网站曾经托管在AWS上,并由cloudfront交付。 然后,我使用gatbsy的网站当前托管在Netlify上,而DNS由AWS管理。 我需要在netlify上托管网站,因为我正在使用netlify cms。

1 个答案:

答案 0 :(得分:1)

我已经找到解决方案。 我的当前gatsby站点上没有service-worker.js文件,因此CRA的服务人员不会被注销。 因此,通过在静态文件夹中添加service-worker.js文件,它将起作用。

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.ready.then(registration => {
      registration.unregister();
    });
  } 
相关问题