React Native 0.69中react-native-fs无法使用的问题求助
解决Expo+React Native 0.69读取assets文件的报错问题
问题根源
你遇到的RNFSManager.RNFSFileTypeRegular错误,本质是Expo托管模式(Managed Workflow)不支持直接使用react-native-fs这类原生依赖——Expo的托管环境会封装原生层,未经过Expo适配的原生模块无法被正确加载,进而引发后续的AppRegistry注册失败。
解决方案一:使用Expo官方FileSystem API(推荐)
Expo提供了原生支持的文件操作API,无需额外配置原生项目,直接使用:
- 安装依赖
npx expo install expo-file-system
- 读取assets文件示例
import * as FileSystem from 'expo-file-system'; import { Asset } from 'expo-asset'; // 读取assets目录下的test.txt文件 async function readAssetFile() { // 关联本地asset资源 const asset = Asset.fromModule(require('./assets/test.txt')); // 下载asset到本地缓存 await asset.downloadAsync(); // 读取文件内容 const content = await FileSystem.readAsStringAsync(asset.localUri); console.log('文件内容:', content); } // 在组件中调用 readAssetFile();
解决方案二:转为裸项目(Bare Workflow)使用react-native-fs
如果必须使用react-native-fs,需要将Expo项目转为裸项目,让原生模块可以正常链接:
- 生成原生项目目录
npx expo prebuild
- 重新安装react-native-fs
npm install react-native-fs
- 配置原生项目(仅Android,Windows环境无需iOS操作)
进入android目录,执行gradle同步(或直接运行项目时自动同步) - 重置缓存并重启服务
# 关闭当前Metro服务后执行 npx react-native start --reset-cache npx react-native run-android
关键注意事项
- React Native 0.60+确实不需要手动
link,但Expo托管模式下原生模块的加载逻辑和纯RN项目不同,这是你之前尝试无效的核心原因。 - 托管模式下只能使用Expo官方或Expo兼容的第三方库,避免直接引入原生依赖。
内容的提问来源于stack exchange,提问作者JayantSeth
相关产品推荐
相关产品推荐

