React Native导入react-native-fetch-blob时出现DocumentDir未定义错误
解决React Native中react-native-fetch-blob的
Cannot read property 'DocumentDir' of undefined错误 我之前在React Native项目里用react-native-fetch-blob时也踩过这个坑,给你几个亲测有效的解决方向:
手动重新链接原生模块(iOS端)
有时候自动链接会有遗漏,手动来一遍更稳妥:- 打开Xcode,找到项目左侧的
Libraries文件夹,右键选择Add Files to [你的项目名称] - 找到
node_modules/react-native-fetch-blob/ios/RNFetchBlob.xcodeproj并添加 - 切换到项目的
Build Phases标签,在Link Binary With Libraries里添加libRNFetchBlob.a - 按
Cmd+Shift+K清理Xcode缓存,然后重新构建项目
- 打开Xcode,找到项目左侧的
手动重新链接原生模块(Android端)
同样检查Android的配置是否到位:- 打开
android/app/src/main/java/[你的包路径]/MainApplication.java - 确认顶部已经导入
import com.RNFetchBlob.RNFetchBlobPackage; - 在
getPackages()方法里加入new RNFetchBlobPackage() - 打开
android/settings.gradle,确保有这两行配置:include ':react-native-fetch-blob' project(':react-native-fetch-blob').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fetch-blob/android') - 打开
android/app/build.gradle,在dependencies块里确认存在implementation project(':react-native-fetch-blob') - 执行
cd android && ./gradlew clean清理缓存,回到根目录重启项目
- 打开
检查Hermes引擎的影响
如果你的项目启用了Hermes,可能需要调整Xcode设置:- 在Xcode的
Build Settings里找到Dead Code Stripping,把它设置为NO - 重新构建项目,看看错误是否消失
- 在Xcode的
彻底清除缓存重启
缓存问题经常会导致模块加载异常,试试这一套操作:- 关闭Metro的终端窗口,杀掉模拟器进程
- 执行
react-native start --reset-cache清除Metro缓存 - 重新启动模拟器和项目
检查版本兼容性
有可能是react-native-fetch-blob的版本和你的React Native版本不匹配,你可以查看它的版本说明,尝试安装兼容的版本:npm install react-native-fetch-blob@[具体兼容版本号] --save终极方案:重新安装依赖
如果上面都没用,试试清空依赖重新来:rm -rf node_modules package-lock.json yarn.lock npm install react-native link react-native-fetch-blob
内容的提问来源于stack exchange,提问作者FortuneCookie
相关产品推荐
相关产品推荐

