React Native集成Realm后报错:TypeError: _realm.default.open is not a function
React Native集成Realm报错:TypeError: _realm.default.open is not a function
在React Native中尝试连接本地Realm数据库时,执行如下代码抛出TypeError: _realm.default.open is not a function错误:
const init = async () => { try { const realm = await Realm.open({ path: "realm-files/myrealm", schema: [TaskSchema], }); console.log("connection details", realm); } catch (error) { console.log("I am an error", error); } };
常见解决方案:
检查Realm版本与初始化方式
Realm.open()是Realm JS v10及以上版本才支持的异步初始化方法,若使用v9或更早版本,需改用同步初始化写法:// 旧版本Realm初始化写法 const init = () => { try { const realm = new Realm({ path: "realm-files/myrealm", schema: [TaskSchema], }); console.log("connection details", realm); } catch (error) { console.log("I am an error", error); } };可查看package.json中的
realm字段确认版本,如需使用异步方法,升级到v10+版本即可。确认Realm安装与链接完成
- 执行
npm install realm或yarn add realm后,iOS端需运行npx pod-install完成依赖安装;Android端需同步gradle配置(可通过Android Studio的Sync Project按钮操作)。 - React Native 0.60+支持自动链接,若链接失败,可尝试清除项目缓存后重新安装:
npx react-native start --reset-cache。
- 执行
检查初始化时机
确保init函数在React Native组件生命周期内调用(比如在useEffect钩子中),避免在组件渲染阶段直接执行导致Realm模块未完全加载:import { useEffect } from 'react'; const YourComponent = () => { useEffect(() => { init(); }, []); // ...组件其他代码 };排查模块缓存或依赖冲突
- 清除React Native缓存:
npx react-native start --reset-cache,同时重启模拟器/真机。 - 检查项目中是否存在多个版本的Realm依赖,可通过
npm list realm或yarn list realm查看依赖树,移除重复依赖。
- 清除React Native缓存:
内容的提问来源于stack exchange,提问作者Jay Dev
相关产品推荐
相关产品推荐

