Cec*_*uez 5 javascript ios react-native
我最近升级到了 Expo SDK 43。
我现在收到此错误:

抛出它的代码行是:
if (!RCTAsyncStorage.multiMerge) {
Run Code Online (Sandbox Code Playgroud)
我使用的是最新版本的 AsyncStorage。
这似乎是由于我使用了 firebase-js-sdk 造成的。
不幸的是,由于这是一个 iOS/Android/Web 项目,因此这是必要的。
当我嘲笑我的 Firebase 导出时,一切正常:
const auth = () => {};
const analytics = () => {};
export default { auth, analytics };
Run Code Online (Sandbox Code Playgroud)
但是当我使用 firebase-js-sdk 函数时,我收到上述消息。
此代码会导致错误(无论我使用哪个版本的身份验证)
let auth = initializeAuth(config, {
persistence: getReactNativePersistence(AsyncStorage),
});
//let auth = getAuth(config);
let analytics = getAnalytics(config);
export default { auth, analytics };
Run Code Online (Sandbox Code Playgroud)
您可以通过添加可选链接(问号“?”)来避免该特定错误:
if (!RCTAsyncStorage?.multiMerge) {
Run Code Online (Sandbox Code Playgroud)
它将短路undefined(从而生成if false),而不是因尝试签入 null 对象而抛出错误。
至于为什么RCTAsyncStorage会为空,您必须检查第一次获取/声明它的位置,并回溯到它未加载的点,也许您正在使用与 firebase-js-sdk 冲突的东西。
正如文档multiMerge中提到的,也可能并不总是受支持:
multiMerge
[...]注意:并非所有本机实现都支持此功能。
| 归档时间: |
|
| 查看次数: |
1010 次 |
| 最近记录: |