React Native iOS运行代码触发TypeError: 无法读取undefined的'init'属性
报错原因排查与解决方案
核心触发逻辑
该报错本质是导入的ReactCBLite对象为undefined,导致无法读取其init属性,常见触发原因及对应解决方法如下:
1. 包版本与导入写法不匹配
react-native-couchbase-lite v1.0及以上版本调整了导出结构,废弃了原有解构导出ReactCBLite的写法,若你安装的是新版本,原有导入写法会返回undefined。
- 解决方案1(适配新版本):修改导入写法为默认导入:
// 新版本无需解构,直接默认导入 import ReactCBLite from 'react-native-couchbase-lite'; import { manager } from 'react-native-couchbase-lite'; ReactCBLite.init(8091, 'admin', 'admin123', e => { console.log('initialized'); });
- 解决方案2(兼容旧写法):回退安装支持解构导出的旧版本:
npm install react-native-couchbase-lite@0.8.0 --save # 或使用yarn yarn add react-native-couchbase-lite@0.8.0
2. iOS端原生依赖未完成链接
RN原生模块需要完成原生端链接才能正常导出JS对象,未链接会导致导入对象为undefined。
- 先尝试自动链接:
react-native link react-native-couchbase-lite
- 自动链接不生效时手动操作:
- 用Xcode打开iOS项目,右键
Libraries文件夹,选择「Add Files to 你的项目名」,选中node_modules/react-native-couchbase-lite/ios/ReactCBLite.xcodeproj添加到项目 - 打开项目配置页,进入
Build Phases→Link Binary With Libraries,添加libReactCBLite.a - 重新编译项目即可
- 用Xcode打开iOS项目,右键
3. iOS端Couchbase Lite原生框架缺失
该模块依赖原生Couchbase Lite框架,未集成框架会导致原生模块初始化失败。
- 解决方案:下载对应版本的Couchbase Lite iOS框架,拖入Xcode项目,勾选
Copy items if needed,在项目配置页的General→Frameworks, Libraries, and Embedded Content中将该框架设置为Embed & Sign,重新编译。
4. iOS Pod依赖未安装
若项目使用CocoaPods管理iOS依赖,未执行pod安装会导致原生依赖缺失。
- 解决方案:进入iOS目录执行pod安装后重新运行项目:
cd ios && pod install && cd ..
内容的提问来源于stack exchange,提问作者Ayushi Mishra
相关产品推荐
相关产品推荐

