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

导入RNFetchBlob后报null is not an object (evaluating 'RNFetchBlob.DocumentDir')错如何解决

问题解决步骤

该错误核心原因是rn-fetch-blob的原生模块未完成项目集成,仅安装npm包无法直接使用,按以下步骤排查修复:

  • 第一步:重装npm依赖
    先清理已安装的异常包,重新安装官方包:
    npm uninstall rn-fetch-blob
    npm install rn-fetch-blob --save
    
  • 第二步:按RN版本处理链接逻辑
    • 若你使用RN 0.59及更低版本,手动执行原生链接命令:react-native link rn-fetch-blob
    • 若你使用RN 0.60及更高版本,无需手动执行link命令,原生依赖支持自动链接,直接进行后续原生配置即可。
  • 第三步:Android端配置
    1. 打开android/app/src/main/AndroidManifest.xml添加存储权限(下载存图必备):
    <!-- 写存储权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    
    若适配Android 10及以上系统,需在<application>标签添加属性:
    android:requestLegacyExternalStorage="true"
    
    1. 清理安卓编译缓存:进入项目android目录执行./gradlew clean
  • 第四步:iOS端配置
    1. 进入项目ios目录执行pod install,安装原生pod依赖
    2. 打开ios/项目名/Info.plist添加相册权限描述:
    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>需要存储权限保存图片到相册</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>需要存储权限读取相册内容</string>
    
  • 第五步:完全重新编译项目
    所有配置完成后,关闭当前所有编译进程,重新执行react-native run-android或react-native run-ios,不可仅热刷新JS代码,原生配置修改必须全量编译生效。

注意:如果你使用的是Expo托管项目,rn-fetch-blob无法直接使用,需切换到Expo裸开发 workflow,或使用Expo官方提供的expo-file-system替代该依赖实现下载功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:30:01