Expo是否支持react-native-encrypted-storage?基于Expo的RN如何存储敏感数据?
问题解答与错误修复
1. Expo是否支持react-native-encrypted-storage?
react-native-encrypted-storage是依赖原生代码实现的第三方库,Expo的两种工作流支持情况不同:
- 托管工作流(Managed Workflow):不支持直接使用。因为托管流由Expo负责维护原生项目,无法添加自定义原生模块,这也是你出现
RNEncryptedStorage is undefined错误的核心原因。 - 裸工作流(Bare Workflow):可以集成,但需要手动完成iOS和Android原生项目的配置(比如添加依赖、配置权限等)。
2. Expo构建的React Native应用存储敏感Token的方案
Expo官方推荐使用Expo Secure Store存储敏感数据(如用户Token、密钥等),它会自动利用iOS的Keychain和Android的Keystore进行加密存储,安全性有保障,且同时支持托管和裸工作流。
具体使用步骤:
- 安装依赖:
npx expo install expo-secure-store
- 替换原有代码为Secure Store的API:
import * as SecureStore from 'expo-secure-store'; // 获取Token const getToken = async () => { const token = await SecureStore.getItemAsync('user-token'); return token; }; // 删除Token const deleteToken = async () => { await SecureStore.deleteItemAsync('user-token'); };
关于RNEncryptedStorage is undefined错误的修复
这个错误是因为你在Expo托管工作流中使用了需要原生配置的react-native-encrypted-storage库,托管流无法加载该库的原生模块。直接替换为上述的Expo Secure Store即可解决问题,无需额外原生配置。
内容的提问来源于stack exchange,提问作者Murat Polat
相关产品推荐
相关产品推荐

