对 Firebase Functions 的 XHR 请求在 Samsung Internet Browser 14 上保持挂起
XHR request to Firebase Functions stays hanging on Samsung Internet Browser 14
我们的应用程序使用 Firestore 和 Firebase 函数。为了保存订单,我们这样调用 https callable Firebase Function:
try {
const setMealplanOrder = fn.httpsCallable("setMealplanOrder");
await setMealplanOrder(newOrder);
return true;
} catch (error) {
console.log(" ~ file: saveOrder.tsx ~ line 158 ~ save ~ error", error)
Sentry.captureMessage("Error saving order, possibly on Android?" + error);
}
它可以在所有设备上运行,直到几天前三星更新到 Android 11 和三星互联网 14。现在,来自 await setMealplanOrder(newOrder)
的 XHR 请求被卡住了。控制台是空的,没有错误。
知道会是什么吗?或者如何调试?
补充说明:
- 有趣的是,当我将 phone 连接到本地主机上的应用程序时,它运行良好。
- 当我尝试从一个新的干净的应用程序发出相同的请求时,它起作用了。所以这个问题可能是与应用程序中的其他东西结合引起的。
已解决:Firebase 版本问题! 问题出在 firebase-messaging-sw.js
Service Worker 中,我们将其用于 Firebase 云消息传递(推送通知)。 Service Worker 的版本已过时。
// Give the service worker access to Firebase Messaging.
// Note that you can only use Firebase Messaging here, other Firebase libraries
// are not available in the service worker.
importScripts('https://www.gstatic.com/firebasejs/7.17.2/firebase-app.js')
importScripts('https://www.gstatic.com/firebasejs/7.17.2/firebase-messaging.js')
...
更新 npm i firebase@latest
并将 importScripts 中的版本更改为 8.4.3
后,它可以正常工作。
我们的应用程序使用 Firestore 和 Firebase 函数。为了保存订单,我们这样调用 https callable Firebase Function:
try {
const setMealplanOrder = fn.httpsCallable("setMealplanOrder");
await setMealplanOrder(newOrder);
return true;
} catch (error) {
console.log(" ~ file: saveOrder.tsx ~ line 158 ~ save ~ error", error)
Sentry.captureMessage("Error saving order, possibly on Android?" + error);
}
它可以在所有设备上运行,直到几天前三星更新到 Android 11 和三星互联网 14。现在,来自 await setMealplanOrder(newOrder)
的 XHR 请求被卡住了。控制台是空的,没有错误。
知道会是什么吗?或者如何调试?
补充说明:
- 有趣的是,当我将 phone 连接到本地主机上的应用程序时,它运行良好。
- 当我尝试从一个新的干净的应用程序发出相同的请求时,它起作用了。所以这个问题可能是与应用程序中的其他东西结合引起的。
已解决:Firebase 版本问题! 问题出在 firebase-messaging-sw.js
Service Worker 中,我们将其用于 Firebase 云消息传递(推送通知)。 Service Worker 的版本已过时。
// Give the service worker access to Firebase Messaging.
// Note that you can only use Firebase Messaging here, other Firebase libraries
// are not available in the service worker.
importScripts('https://www.gstatic.com/firebasejs/7.17.2/firebase-app.js')
importScripts('https://www.gstatic.com/firebasejs/7.17.2/firebase-messaging.js')
...
更新 npm i firebase@latest
并将 importScripts 中的版本更改为 8.4.3
后,它可以正常工作。