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

Expo dev-client启动RN导航项目报RNSScreenStackHeaderConfig未找到错误

问题描述

使用Expo托管项目,执行expo start --dev-client命令启动自定义开发客户端时,抛出如下报错:

Invariant Violation: requireNativeComponent: "RNSScreenStackHeaderConfig" was not found in the UIManager.

This error is located at:
    in RNSScreenStackHeaderConfig (created by HeaderConfig)
    in HeaderConfig (created by SceneView)
    in RNSScreen (created by AnimatedComponent)
    in AnimatedComponent
    in AnimatedComponentWrapper (created by Screen)
    in MaybeFreeze (created by Screen)
    in Screen (created by SceneView)
    in SceneView (created by NativeStackViewInner)
    in RNSScreenStack (created by ScreenStack)
    in ScreenStack (created by NativeStackViewInner)
    in NativeStackViewInner (created by NativeStackView)
    in RNCSafeAreaProvider (created by SafeAreaProvider)
    in SafeAreaProvider (created by SafeAreaInsetsContext)
    in SafeAreaProviderCompat (created by NativeStackView)
    in NativeStackView (created by NativeStackNavigator)
    in Unknown (created by NativeStackNavigator)
    in NativeStackNavigator (created by App)
    in EnsureSingleNavigator
    in BaseNavigationContainer
    in ThemeProvider
    in NavigationContainerInner (created by App)
    in Provider (created by App)
    in App (created by ExpoRoot)
    in ExpoRoot
    in RCTView (created by View)
    in View (created by AppContainer)
    in RCTView (created by View)
    in View (created by AppContainer)
    in AppContainer
at node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 in reportException
at node_modules/react-native/Libraries/Core/ExceptionsManager.js:172:19 in handleException
at node_modules/react-native/Libraries/Core/ReactFiberErrorDialog.js:43:2 in showErrorDialog
at node_modules/expo-font/build/FontHooks.js:26:33 in loadAsync.then$argument_0

Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.

相同项目执行expo start通过Expo Go启动时,应用可完全正常运行。

问题根因

Expo Go内置了Expo SDK官方支持的所有常用原生依赖,因此不需要额外构建就能直接运行包含原生模块的代码;但自定义开发客户端(dev client)不会自动同步依赖变更,只要项目新增、更新了带原生代码的依赖,没有重新构建客户端就会出现「原生组件找不到」的报错。本次报错中缺失的RNSScreenStackHeaderConfig属于react-native-screens原生模块,是React Navigation原生栈导航的核心依赖。

解决步骤
  • 先安装匹配当前Expo SDK版本的必要依赖,执行命令:npx expo install react-native-screens react-native-safe-area-context,不要手动用npm/yarn安装不匹配的版本,避免版本兼容问题。
  • 重新构建自定义开发客户端,原生依赖的变更无法通过热更新生效,必须重新打包客户端:
    • 本地调试安卓可直接执行npx expo run:android,使用EAS云构建执行eas build --profile development --platform android
    • 本地调试iOS可直接执行npx expo run:ios,使用EAS云构建执行eas build --profile development --platform ios
  • 卸载设备/模拟器上已安装的旧版开发客户端,安装新构建完成的安装包,再执行expo start --dev-client启动即可。
  • 若重新构建后仍存在报错,检查app.json配置,确认没有手动禁用react-native-screens相关插件,同时确认导航导入正确,使用的是官方维护的@react-navigation/native-stack而非弃用的旧版导航栈组件。
  • 报错附带的「unmounted component上执行state更新」警告是原生报错导致组件异常卸载引发的连带问题,核心报错修复后会自动消失,无需单独处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:27:41