已通过expo install安装@react-native-async-storage/async-storage但弃用警告仍存在
问题原因
你自己的业务代码没有引用AsyncStorage的情况下还出现该警告,是因为你安装的第三方依赖内部仍然在调用react-native内置的旧版AsyncStorage。从你给出的依赖清单来看,两个依赖是触发警告的来源:
firebase@9.5.0:该版本的内部模块还未切换到独立的AsyncStorage包,仍在引用react-native核心里的AsyncStorageexpo-firebase-recaptcha@2.0.2:该旧版本封装依赖旧版firebase逻辑,同样会调用旧版AsyncStorage
你单独安装@react-native-async-storage/async-storage不生效,是因为依赖的引用路径没有修改,并不会自动指向你安装的独立包。
解决方案
方案1:升级依赖(推荐)
将两个涉事依赖升级到适配版本即可从根源解决警告:
- 升级firebase到9.6.0及以上版本,该版本开始官方已经完成AsyncStorage引用路径的切换
- 升级expo-firebase-recaptcha到适配Expo 43的2.1.0版本,对应执行命令:
expo install firebase@^9.6.0 expo-firebase-recaptcha@~2.1.0
方案2:临时屏蔽警告
如果暂时不方便升级依赖,可以直接在项目入口文件(通常是App.js/index.js)的最顶部添加代码屏蔽该警告,不会影响正常功能:
import { LogBox } from 'react-native'; LogBox.ignoreLogs(['AsyncStorage has been extracted from react-native core']);
方案3:排查其他依赖
如果升级上述两个依赖后警告仍然存在,说明还有其他第三方依赖在使用旧版AsyncStorage,可以在node_modules目录下全局搜索包含AsyncStorage且从react-native导入的代码,定位到具体依赖后升级对应包即可。
内容的提问来源于stack exchange,提问作者Deon Okonkwo
相关产品推荐
相关产品推荐

