删除服务-worker.js(特例)
Remove service-worker.js (special case)
我所说的特殊情况是指我在使用 create-react-app 时需要删除旧的 service worker。
在将整个网站切换为使用 gatsby 之前,我应该在使用 cra 时删除它。
有了 gatsby,我知道我可以像这样删除 service worker
//'gatsby-plugin-offline',
'gatsby-plugin-remove-serviceworker'
但是在用户的浏览器上,他们很久以前访问过我的网站,当时我的网站使用的是 CRA,并且他们的设备上安装了 Service Worker。然后是我的愚蠢,我在迁移到 gatsby 之前没有删除 CRA 的 service worker。
所以现在,我的网站正在使用 gatsby,我已将其配置为像上面的代码一样删除 service worker。但它不会删除 CRA 的 service worker。
在 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);
});
}
}
相关信息:
My CRA 的网站曾经托管在 AWS 上,并由云端交付。
然后我使用 gatbsy 的网站目前托管在 Netlify 上,DNS 由 AWS 管理。
我需要在 netlify 上托管网站,因为我使用的是 netlify cms。
我已经找到解决办法了。
CRA 的 service worker 不会被注销,因为我当前的 gatsby 站点没有 service-worker.js 文件。
因此,通过在静态文件夹中添加一个 service-worker.js 文件,它将起作用。
if ('serviceWorker' in navigator) {
navigator.serviceWorker.ready.then(registration => {
registration.unregister();
});
}
我所说的特殊情况是指我在使用 create-react-app 时需要删除旧的 service worker。 在将整个网站切换为使用 gatsby 之前,我应该在使用 cra 时删除它。 有了 gatsby,我知道我可以像这样删除 service worker
//'gatsby-plugin-offline',
'gatsby-plugin-remove-serviceworker'
但是在用户的浏览器上,他们很久以前访问过我的网站,当时我的网站使用的是 CRA,并且他们的设备上安装了 Service Worker。然后是我的愚蠢,我在迁移到 gatsby 之前没有删除 CRA 的 service worker。 所以现在,我的网站正在使用 gatsby,我已将其配置为像上面的代码一样删除 service worker。但它不会删除 CRA 的 service worker。 在 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);
});
}
}
相关信息: My CRA 的网站曾经托管在 AWS 上,并由云端交付。 然后我使用 gatbsy 的网站目前托管在 Netlify 上,DNS 由 AWS 管理。 我需要在 netlify 上托管网站,因为我使用的是 netlify cms。
我已经找到解决办法了。 CRA 的 service worker 不会被注销,因为我当前的 gatsby 站点没有 service-worker.js 文件。 因此,通过在静态文件夹中添加一个 service-worker.js 文件,它将起作用。
if ('serviceWorker' in navigator) {
navigator.serviceWorker.ready.then(registration => {
registration.unregister();
});
}