React Native中Realm的AppProvider报错:Cannot read property 'prototype' of undefined
问题分析与解决方案
出现TypeError: Cannot read property 'prototype' of undefined的核心原因大概率是Realm Provider的嵌套层级错误,或者依赖导入/版本兼容问题,以下是具体修正步骤:
1. 调整Provider嵌套顺序
Realm的AppProvider需要作为应用的顶层Provider,必须包裹在NavigationContainer之外。因为Realm的App实例需要在导航系统初始化前完成创建,否则会导致初始化阶段无法获取有效实例,触发原型未定义的错误。修正后的代码如下:
<AppProvider id={"id"}> <NavigationContainer ref={navigationRef} onReady={() => { isReadyRef.current = true; }} theme={isDarkMode ? DarkTheme : LightTheme} > <UserProvider fallback={InstallManual}> <RealmProvider appId={appId}> <Stack.Navigator screenOptions={{ headerShown: false }}> <Stack.Screen name={SCREENS.INSTALLMANUAL} component={InstallManual} /> <Stack.Screen name={SCREENS.FORGET_PASSWORD} component={ForgetPasswordScreen} /> </Stack.Navigator> </RealmProvider> </UserProvider> </NavigationContainer> </AppProvider>
2. 验证导入正确性
确保AppProvider是从正确的Realm包导入:
// 正确导入(适用于Realm v10.18+的@realm/react绑定) import { AppProvider } from '@realm/react'; // 若使用旧版Realm(v10.17及以下),需从realm包导入 import { AppProvider } from 'realm';
3. 检查版本兼容性
确认React Native、Realm、React Navigation的版本匹配:
- Realm v12+要求React Native >= 0.67.0
@realm/react需要搭配对应版本的Realm核心包
运行以下命令查看依赖版本:
npm list realm @realm/react react-native @react-navigation/native
若版本不兼容,升级或降级到官方推荐的兼容版本组合。
4. 清除缓存
执行Metro缓存重置,避免旧编译文件导致的异常:
npx react-native start --reset-cache
内容的提问来源于stack exchange,提问作者Tanmoy Sarker
相关产品推荐
相关产品推荐

