特殊情况下我的意思是,当我使用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。
答案 0 :(得分:1)
我已经找到解决方案。 我的当前gatsby站点上没有service-worker.js文件,因此CRA的服务人员不会被注销。 因此,通过在静态文件夹中添加service-worker.js文件,它将起作用。
if ('serviceWorker' in navigator) {
navigator.serviceWorker.ready.then(registration => {
registration.unregister();
});
}