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

React Native升级0.66后Swift原生类桥接失效无法调用问题求助

问题排查及修复方案

  • 首先是RN侧模块名、方法名与原生侧不匹配
    1. 原生暴露的模块名为CalendarManager,但你在RN代码中错误解构了CalendarModule,导致你拿到的模块本身就是undefined,类型断言as CalendarManager屏蔽了TS层面的报错,运行时调用静默失败,自然也不会触发原生类的初始化逻辑,断点无法命中。
    2. 原生暴露的方法名为addEvent,你在RN中调用的是createCalendarEvent,同时原生方法要求3个参数,你只传了2个,完全匹配不到对应的原生方法。
      修复后的CalendardModule.ts代码:
    const { CalendarManager } = NativeModules; // 模块名和原生保持一致
    
    type CalendarManager = {
      addEvent(name: string, location: string, date: number): void; // 方法名、参数和原生对齐
    };
    
    export default CalendarManager as CalendarManager;
    
    调用代码也要对应修改:
    // 点击回调函数
    const onClickListenerHandler = () => {
      console.log("Test");
      // 方法名、参数数量和原生一致,date参数传对应时间戳即可
      CalendarManager.addEvent("Test", "Test", Date.now());
    };
    
  • 其次是OC桥接文件配置缺失
    React Native 0.64+版本对Swift原生模块的桥接要求更严格,你需要在CalendarManager.m文件头部导入RN桥接头文件:
    #import <React/RCTBridgeModule.h>
    
    @interface RCT_EXTERN_MODULE(CalendarManager, NSObject)
    RCT_EXTERN_METHOD(addEvent:(NSString *)name location:(NSString *)location date:(nonnull NSNumber *)date)
    @end
    
    0.66版本新架构尚未稳定,确认你的podfile中没有强制开启新架构相关配置,避免兼容性问题。
  • 最后是编译缓存问题
    跨版本升级后很容易残留旧编译缓存,按下列步骤清理后重新运行即可:
    1. 关闭Xcode,删除ios/build文件夹
    2. 进入ios目录执行pod deintegrate && pod install
    3. 重新打开Xcode,执行Product -> Clean Build Folder后再运行项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:48:00