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

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

我所说的特殊情况是指,当我使用 create-react-app 时,我需要删除旧的 Service Worker。 我应该在使用 cra 时将其删除,然后再将整个网站切换为使用 gatsby。 有了 Gatsby ,我知道我可以像这样删除服务人员

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

但是在用户的浏览器上,他们很久以前访问了我的网站,当时我的网站正在使用 CRA,并且在他们的设备上安装了 Service Worker。然后我很愚蠢,在搬到 Gatsby 之前我没有删除 CRA 的服务人员。 所以现在,我的网站正在使用 gatsby,我已将其配置为删除服务 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);

        });
    }
} 

相关资料: 我的 CRA 网站过去托管在 AWS 上,并由 cloudfront 交付。 然后我使用 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();
    });
  } 

关于amazon-cloudfront - 删除service-worker.js(特殊情况),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56886891/

相关文章:

带 SSL 的 WordPress

ssl - Amazon S3 静态网站的 HTTPS

javascript - react / Gatsby ;无法读取 null 的属性 'map'

gatsby - 如何将变量从 'context' 传递给页面查询? | Gatsby

reactjs - 在 React - Router 4 中查看/下载 Pdf 文件

reactjs - Gatsby - 将状态属性传递给 GraphQL 查询变量/参数?

amazon-web-services - AWS Api 网关自定义域路由到错误的基本 URL

cdn - Wowza+AWS Cloudfront 流可用性延迟

reactjs - CRA微前端应用初始化 'styled-components'的几个实例

reactjs - 错误 : Node Sass version 5. 0.0 与 ^4.0.0 不兼容