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

升级React Native及React Navigation后iOS端出现SafeAreaProviderCompat错误求助

React Native 升级后 iOS 运行报错:SafeAreaProviderCompat 未定义

问题描述

将 React Native 升级至 0.70.5,同时把 @react-navigation/native 升级到 6.0.13、@react-navigation/native-stack 升级到 6.9.1 后,iOS 项目运行出现以下错误:

TypeError: undefined is not an object (evaluating '_$$_REQUIRE(_dependencyMap[13], "@react-navigation/elements").SafeAreaProviderCompat')
Error: Requiring unknown module "undefined". If you are sure the module exists, try restarting Metro. You may also want to run yarn or npm install.
Error: Requiring module "node_modules/@react-navigation/elements/src/index.tsx", which threw an exception: Error: Requiring unknown module "undefined". If you are sure the module exists, try restarting Metro. You may also want to run yarn or npm install.

已尝试清理项目、重装依赖、删除 node_modules/Pods/构建文件、重装 react-native-screens@3.18.2 和 react-native-safe-area-context@4.4.1,但问题仍存在。

解决方案

1. 安装适配版本的 @react-navigation/elements

SafeAreaProviderCompat 属于 @react-navigation/elements 包,当前导航版本和该包版本不匹配会导致异常,执行以下命令安装兼容版本:

# 使用 npm
npm install @react-navigation/elements@^1.3.17

# 使用 yarn
yarn add @react-navigation/elements@^1.3.17

2. 彻底清除 Metro 缓存

缓存残留可能导致模块引用错乱,重启 Metro 时强制清除缓存:

# 使用 npm
npm start -- --reset-cache

# 使用 yarn
yarn start --reset-cache

3. 重新安装 iOS Pods

确保 iOS 端依赖正确链接:

cd ios
pod deintegrate
pod install
cd ..

4. 替换为原生 SafeAreaProvider

如果上述操作无效,可直接使用 react-native-safe-area-context 提供的 SafeAreaProvider 替代 SafeAreaProviderCompat:

// 替换原有导入
import { SafeAreaProvider } from 'react-native-safe-area-context';

// 在根组件中使用
export default function App() {
  return (
    <SafeAreaProvider>
      {/* 导航容器及其他业务组件 */}
    </SafeAreaProvider>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 22:15:49