Expo React Native+NativeWind升级SDK52后iOS/Android报错求助
问题描述
Expo React Native + NativeWind项目从SDK 51升级到52后,npx expo start -c构建成功,但真机测试出现以下错误:
iOS 错误
(NOBRIDGE) LOG Bridgeless mode is enabled (NOBRIDGE) ERROR Error: Exception in HostFunction: Unable to convert string to floating point value: "large" This error is located at: in RNSScreen (created by Animated(Anonymous)) in Animated(Anonymous) in Suspender (created by Freeze) in Suspense (created by Freeze) in Freeze (created by DelayedFreeze) in DelayedFreeze in InnerScreen (created by Screen) in Screen (created by MaybeScreen) in MaybeScreen (created by CardStack) in RNSScreenContainer (created by ScreenContainer) in ScreenContainer (created by MaybeScreenContainer) in MaybeScreenContainer (created by CardStack) in RCTView (created by View) in View (created by CssInterop.View) in CssInterop.View (created by Animated(View)) in Animated(View) (created by Background) in Background (created by CardStack) in CardStack (created by HeaderShownContext) in RNCSafeAreaProvider (created by SafeAreaProvider) in SafeAreaProvider (created by SafeAreaProviderCompat) in SafeAreaProviderCompat (created by StackView) in RCTView (created by View) in View (created by CssInterop.View) in CssInterop.View (created by GestureHandlerRootView) in GestureHandlerRootView (created by StackView) in StackView (created by StackNavigator) in PreventRemoveProvider (created by NavigationContent) in NavigationContent in Unknown (created by StackNavigator) in StackNavigator (created by RootNavigator) in RootNavigator (created by App) in ThemeProvider in EnsureSingleNavigator in BaseNavigationContainer in NavigationContainerInner (created by App) in QueryClientProvider (created by App) in I18nextProvider (created by App) in ThemeProvider (created by App) in RCTView (created by View) in View (created by CssInterop.View) in CssInterop.View (created by App) in RCTView (created by View) in View (created by CssInterop.View) in CssInterop.View (created by GestureHandlerRootView) in GestureHandlerRootView (created by App) in App (created by withDevTools(App)) in withDevTools(App) in RCTView (created by View) in View (created by CssInterop.View) in CssInterop.View (created by AppContainer) in RCTView (created by View) in View (created by CssInterop.View) in CssInterop.View (created by AppContainer) in AppContainer in main(RootComponent)
Android 错误
(NOBRIDGE) LOG Bridgeless mode is enabled (NOBRIDGE) ERROR Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'RNCWebView' could not be found. Verify that a module by this name is registered in the native binary.Bridgeless mode: true. TurboModule interop: true. Modules loaded: {"NativeModules":[],"TurboModules":["PlatformConstants","LogBox","SourceCode","Appearance","AppState","AccessibilityInfo","DeviceInfo","BlobModule","WebSocketModule","DevSettings","DevToolsSettingsManager","Networking","DevLoadingView","ImageLoader","SoundManager","IntentAndroid","DeviceEventManager","NativeReactNativeFeatureFlagsCxx","NativeAnimatedModule","ReanimatedModule","RNGestureHandlerModule","StatusBarManager","StatusBarManager","I18nManager","RNCAsyncStorage"],"NotFound":["NativePerformanceCxx","NativePerformanceObserverCxx","AccessibilityManager","RedBox","BugReporting","HeadlessJsTaskSupport","LinkingManager","RNCSafeAreaContext","FrameRateLogger","KeyboardObserver","RNSModule","PlatformLocalStorage","RNC_AsyncSQLiteDBStorage","RNCWebView"]} (NOBRIDGE) WARN 🚨 React Native's New Architecture is always enabled in Expo Go, but it is not explicitly enabled your project app config. This may lead to unexpected behavior when you create a production or development build. Set "newArchEnabled": true in your app.json.
已尝试升级所有依赖、清理构建,问题仍存在。
修复方案
针对iOS "large" 字符串转浮点错误
- 排查NativeWind语义化尺寸使用
- 检查项目中所有使用
text-lg、font-large这类语义化尺寸类的代码,SDK 52适配新架构后,部分样式属性(如fontSize、padding)需使用具体数值而非字符串别名。 - 将语义化尺寸替换为具体数值,比如
text-lg改为text-[18px],或确认NativeWind配置已正确将别名映射为数值。
- 检查项目中所有使用
- 升级react-native-screens兼容版本
- SDK 52要求
react-native-screens版本至少为3.29.0,执行命令:npm install react-native-screens@latest
- SDK 52要求
- 检查导航组件自定义样式
- 查看Stack Navigator的
screenOptions、headerStyle等配置中是否传递了字符串类型的尺寸值(如fontSize: 'large'),改为数值格式(如18)。
- 查看Stack Navigator的
针对Android RNCWebView找不到的错误
- 替换为expo-webview
- SDK 52不再推荐第三方
react-native-webview,改用Expo官方维护的库:npm uninstall react-native-webview npm install expo-webview - 将项目中所有
import { WebView } from 'react-native-webview'替换为import { WebView } from 'expo-webview'。
- SDK 52不再推荐第三方
- 启用新架构配置
- 在
app.json或app.config.js中添加配置:{ "expo": { "newArchEnabled": true } }
- 在
- 彻底清理缓存重建
- 执行命令清理缓存后重启项目:
npx expo start -c
- 执行命令清理缓存后重启项目:
通用排查步骤
- 运行
npx expo doctor检查依赖兼容性,修复工具提示的所有问题。 - 暂时移除未适配新架构的自定义Native模块或第三方库,测试是否解决问题。
内容的提问来源于stack exchange,提问作者Zak
相关产品推荐
相关产品推荐

