Create-React-App service worker 在 Safari 16.4 中失败

问题描述 投票:0回答:0

我有一个使用 PWA 模板的非弹出式 CRA 应用程序。我正在注册服务工作者以启用离线使用。它在我测试过的所有浏览器和环境中都运行良好,它过去也能在我的 iPad 上运行——直到本周,当我更新到 iOS 16.4 时。

现在,在 iPad 上,页面会在第一次访问时加载(例如,在我清除 Safari 中的所有网络数据之后)。刷新应用程序后,我会在该加载和所有后续加载上看到一个空白屏幕。恢复的唯一方法是再次重置网络数据。

我将我的 iPad 连接到我的 Macbook 并使用了 Safari 开发者工具。我可以访问主应用程序和服务工作者开发者控制台。两者都没有显示任何错误,但我可以看到 service worker 返回的 index.html 页面是空的:

<html>
    <head></head>
    <body></body>
</html>

我还将我的 Macbook 上的 Safari 更新到 16.4,我得到了不同的不良行为。在 MacOS Safari 上,Service Worker 在我在线时每次加载时都会返回正确的 index.html。但是如果我离线,我会得到:

Safari can't open the page <my url>. The error is:
"FetchEvent.respondWith received an error: TypeError: Load failed" (WebKitServiceWorker:0) 

在其他环境/浏览器中,一切都继续正常工作。

我什至不知道如何解决这个问题。我希望在工作箱中启用日志记录(在this之后),但我不知道如何使用 CRA 创建开发版本。我尝试了各种像this这样的东西,但据我所知,工作箱使用

NODE_ENV
来确定它是否应该记录,而且我不知道有什么方法可以将
NODE_ENV
更改为
production
以外的东西在构建中。

什么可能导致 iPad 和 MacOS 上的 Safari 中的 service-worker 行为,我该如何解决它?

ios safari create-react-app progressive-web-apps workbox
© www.soinside.com 2019 - 2024. All rights reserved.