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

Expo eject后iOS编译报错:RCTAsyncLocalStorage无initWithStorageDirectory:方法

解决Expo Eject后Xcode中RCTAsyncLocalStorage的initWithStorageDirectory:错误

我之前也碰到过这个问题,这个错误的核心原因是Expo eject之后,项目里的AsyncStorage实现和你当前使用的React Native 0.50.3版本不兼容,或者是Expo的配置残留导致调用了一个不存在的初始化方法。下面是几个经过验证的解决方案,你可以按顺序尝试:

方案一:确保使用React Native内置的AsyncStorage

React Native 0.50.x版本已经内置了AsyncStorage,不需要依赖第三方或者Expo的旧实现。检查你项目中所有使用AsyncStorage的代码,确保导入语句是:

import AsyncStorage from 'react-native';

如果之前是从expo或者其他库导入的,替换成上面的写法。

方案二:清理依赖和Xcode缓存

有时候缓存或者依赖损坏会导致这类奇怪的错误,按以下步骤操作:

  • 删除项目根目录的node_modules文件夹:
    rm -rf node_modules
    
  • 清除npm缓存(用yarn的话换成yarn cache clean):
    npm cache clean --force
    
  • 重新安装依赖:
    npm install
    
  • 清理Xcode的Derived Data:
    打开Xcode → 点击顶部菜单栏的Xcode → Preferences → 切换到Locations标签 → 点击Derived Data旁边的箭头,找到你当前项目的文件夹并删除它。
  • 重启Xcode,然后重新build项目。

方案三:更新CocoaPods依赖(如果使用了Pods)

如果你的iOS项目用了CocoaPods管理依赖,可能是Pods版本不匹配导致的:

  • 打开项目的Podfile,确保React相关的依赖版本和你的react-native版本(0.50.3)一致。
  • 执行以下命令重新安装Pods:
    pod deintegrate
    pod install
    

方案四:手动修改初始化代码(仅前面方案无效时尝试)

如果上面的方法都没解决,你可以找到调用initWithStorageDirectory:的代码位置(通常在AppDelegate.m或者相关初始化文件中),把它替换成React Native 0.50.x支持的初始化方式:

// 替换之前的 initWithStorageDirectory: 调用
RCTAsyncLocalStorage *asyncStorage = [[RCTAsyncLocalStorage alloc] init];

你的依赖中expo@23.0.6和react-native@0.50.3是匹配的,所以按上面的步骤操作应该能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:37:35