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

React Native 0.75.1版本TestFlight构建启动后崩溃求助

React Native Release/TestFlight构建启动崩溃:DevMenu模块找不到

环境信息

  • React Native版本:"react-native": "^0.75.1"
  • Xcode版本:16.0
  • macOS版本:15.1

问题现象

开发模式下应用运行正常,但TestFlight构建版本启动闪屏后直接崩溃,Release版本运行时抛出以下错误:

*** 因未捕获异常终止应用 'RCTFatalException: 未处理的JS异常: Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'DevMenu' 未找到。请确认该模块已在原生二进制文件中注册。Bridgeless模式: false. TurboModule互操作: false. 已加载模块: {"NativeModules":["UIManager","PlatformConstants","DeviceInfo","RNGestureHandlerModule","I18nManager","RNCAsyncStorage","NativeAnimatedModule","SourceCode","BlobModule"],"TurboModules":[],"NotFound":["NativePerformanceObserverCxx","NativePerformanceCxx","NativeReactNativeFeatureFlagsCxx","RedBox","BugReporting","HeadlessJsTaskSupport","PlatformLocalStorage","RNC_AsyncSQLiteDBStorage","SoundManager","DevMenu"]}, js引擎: hermes', 原因: '未处理的JS异常: Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'DevMenu' 未找到。请确认该模块已在原生二进制文件中注册..., 调用栈:
invariant@1784:25
getEnforcing@2585:27
anonymous@288331:67
loadModuleImplementation@158:13
guardedLoadModule@96:37
metroRequire@38:91
anonymous@288289:58
loadModuleImplementation@158:13
guardedLoadModule@96:37
metroRequire@38:91
anonymous@288264:25
loadModuleImplementation@158:13
guardedLoadModule@96:37
metroRequire@38:91
anonymous@285895:52
loadModuleImplementation@158:13
guardedLoadModule@96:37
metroRequire@38:91
anonymous@285813:66
loadModuleImplementation@158:13
guardedLoadModule@96:37
metroRequire@38:91
anonymous@285784:65
loadModuleImplementation@158:13
guardedLoadModule@96:37
metroRequire@38:91
anonymous@58732:60
loadModuleImplementation@158:13
guardedLoadModule@96:37
metroRequire@38:91
anonymous@770:47
loadModuleImplementation@158:13
guardedLoadModule@89:46
metroRequire@38:91
global@290137:3
'
*** 首次抛出调用栈:
(
0 CoreFoundation 0x00000001804ae138 _exceptionPreprocess + 172
1 libobjc.A.dylib 0x0000000180087db4 objc_exception_throw + 56
2 myapp 0x0000000100a711fc RCTFormatError + 0
3 myapp 0x0000000100ae8628 -[RCTExceptionsManager reportFatal:stack:exceptionId:extraDataAsJSON:] + 488
4 myapp 0x0000000100ae8e50 -[RCTExceptionsManager reportException:] + 1316
5 CoreFoundation 0x00000001804b4760 invoking
+ 144
6 CoreFoundation 0x00000001804b1ac4 -[NSInvocation invoke] + 276
7 CoreFoundation 0x00000001804b1d5c -[NSInvocation invokeWithTarget:] + 60
8 myapp 0x0000000100aa6588 -[RCTModuleMethod invokeWithBridge:module:arguments:] + 380
9 myapp 0x0000000100aa86e8 _ZN8facebook5reactL11invokeInnerEP9RCTBridgeP13RCTModuleDatajRKN5folly7dynamicEiN12_GLOBAL__N_117SchedulingContextE + 452
10 myapp 0x0000000100aa833c ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 116
11 libdispatch.dylib 0x0000000102363ec4 _dispatch_call_block_and_release + 24
12 libdispatch.dylib 0x000000010236573c _dispatch_client_callout + 16
13 libdispatch.dylib 0x000000010236da30 _dispatch_lane_serial_drain + 916
14 libdispatch.dylib 0x000000010236e774 _dispatch_lane_invoke + 420
15 libdispatch.dylib 0x000000010237b1a8 _dispatch_root_queue_drain_deferred_wlh + 324
16 libdispatch.dylib 0x000000010237a604 _dispatch_workloop_worker_thread + 488
17 libsystem_pthread.dylib 0x0000000102e0bb74 _pthread_wqthread + 284
18 libsystem_pthread.dylib 0x0000000102e0a934 start_wqthread + 8
)
libc++abi: 因未捕获NSException类型异常终止

修复方案

错误根源是Release/TestFlight构建不包含DevMenu这类开发专属模块,但JS代码仍在尝试调用它。按以下步骤修复:

  1. 给DevMenu相关代码加环境判断
    搜索代码库中所有调用DevMenu或TurboModuleRegistry.getEnforcing('DevMenu')的位置,用__DEV__变量包裹,确保只在开发环境执行:

    if (__DEV__) {
      const DevMenu = TurboModuleRegistry.getEnforcing('DevMenu');
      // 这里放DevMenu相关操作
    }
    
  2. 排查第三方依赖
    部分第三方库可能内部引用了DevMenu却未做环境判断:

    • 优先升级该依赖到最新版本,看是否修复了问题
    • 若无法升级,可通过metro配置在打包时剔除相关代码
  3. 配置metro生产环境替换规则
    在metro.config.js中添加生产环境的模块替换,把DevMenu指向空模块:

    const path = require('path');
    
    module.exports = {
      // 其他原有配置
      ...(process.env.NODE_ENV === 'production' ? {
        resolver: {
          extraNodeModules: {
            'DevMenu': path.resolve(__dirname, './empty-module.js')
          }
        }
      } : {})
    };
    

    然后在项目根目录创建empty-module.js:

    module.exports = {};
    
  4. 清理缓存重新构建

    • 执行pod install --clean-install清理iOS依赖
    • Xcode中执行Product -> Clean Build Folder
    • 重新生成TestFlight构建包

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:49:59