You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用npx create-react-native-library新建Native Module访问返回null如何解决

问题原因

新增Native Module通过ReactNative.NativeModules访问返回null,通常是以下几类原因导致:

  • 原生端未正确注册新增的模块类
  • 原生端模块导出名称与JS端调用名称大小写不匹配
  • 新增原生文件后未重新编译原生端代码,仅刷新JS bundle不生效
  • RN自动链接未识别新增原生文件,或单平台遗漏实现
  • 模块代码存在语法错误导致初始化失败
排查解决步骤

通用排查

  • 校验原生模块getName()方法(Android)/RCT_EXPORT_MODULE宏参数(iOS)的返回值,与JS端访问NativeModules.xxx的属性名完全一致,注意大小写敏感
  • 每次新增原生文件后必须重新执行原生端构建,不要仅依赖JS热重载、live reload功能
  • 在原生模块的构造/初始化方法中添加日志输出,确认APP启动时模块类被正常实例化

Android平台专项排查

  • 找到库项目中实现ReactPackage接口的类,检查createNativeModules方法返回的List中是否手动添加了新增的模块实例,模板默认仅注册初始生成的模块,新增模块必须手动补加,示例:
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
  List<NativeModule> modules = new ArrayList<>();
  // 原有模块
  modules.add(new ExistingModule(reactContext));
  // 必须手动添加新增模块
  modules.add(new NewCustomModule(reactContext));
  return modules;
}
  • 确认新增模块类添加了@ReactModule注解,且name参数与getName()返回值一致

iOS平台专项排查

  • 确认新增模块类遵守RCTBridgeModule协议
  • 检查模块实现代码中是否添加了RCT_EXPORT_MODULE()宏,需要自定义导出名时传入对应参数即可,无参数时默认导出类名
  • Swift编写的模块需要确保添加了正确的桥接头文件,类和导出方法都用@objc修饰
  • 清理构建缓存后重试:按住Option键点击Xcode顶部菜单栏Product -> Clean Build Folder,删除ios/build目录后重新构建项目

内容的提问来源于stack exchange,提问作者CapiPato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 22:39:04