我已经用尽了互联网上的所有线索,但找不到解决方案。 我正在尝试使用react-native-fetch-blob从我的react-native应用程序将照片上传到firebase。 运行 iphone 6 的 RN ios 模拟器。 不使用世博会 由于 android 环境设置在不同的计算机上,我还没有尝试在 android 模拟器上运行。
此行导致错误。
import RNFetchBlob from 'react-native-fetch-blob'
我已经阅读了许多有关使用react-native-fetch-blob的教程。
我似乎无法正确链接它,或者请告诉我我的问题是什么。
"react": "16.0.0-beta.5",
"react-native": "0.49.3",
"react-native-fetch-blob": "^0.10.8",
我已经尝试过...
npm install --save react-native-fetch-blob
react-native link
...
npm install --save react-native-fetch-blob
react-native link react-native-fetch-blob
...
rm -rf node_modules, then reinstall, then clean and build
... 我按照 WIKI 手动链接包。已验证的包通过 SS 链接 ...
在完成所有这些场景之后进行清理和构建。
我不会列出我所做的一切,因为我已经尝试了 stack 和 RNFB Issues/github 上的所有内容。
以下是 Xcode 的一些屏幕截图,RNFB 已正确链接,或者至少我认为如此。
我找到了这个https://github.com/benjreinhart/react-native-aws3
并且将尝试通过 AWS 进行测试,直到有人可以帮助链接 fetch blob。等我上班有时间再更新吧。
我终于成功安装了
react-native-fetch-blob
并摆脱了Cannot read property 'DocumentDir of undefined'
:
我认为我之前错过的重要部分是为 iOS 运行
pod install
。
对于 Android,它以前对我不起作用的原因可能与我在项目中使用 react-native-navigation
有关,这意味着我的 MainApplication.java
与默认的不同。确保您已在 getPackages()
方法中列出并初始化了库。
这是我的
MainApplication.java
供参考:
public class MainApplication extends NavigationApplication {
@Override
protected ReactGateway createReactGateway() {
ReactNativeHost host = new NavigationReactNativeHost(this, isDebug(), createAdditionalReactPackages()) {
@Override
protected String getJSMainModuleName() {
return "index";
}
};
return new ReactGateway(this, isDebug(), host);
}
@Override
public boolean isDebug() {
return BuildConfig.DEBUG;
}
protected List<ReactPackage> getPackages() {
// Add additional packages you require here
// No need to add RnnPackage and MainReactPackage
return Arrays.<ReactPackage>asList(
new MapsPackage(),
new RNFetchBlobPackage()
);
}
@Override
public List<ReactPackage> createAdditionalReactPackages() {
return getPackages();
}
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
SoLoader.init(this, /* native exopackage */ false);
}
}
希望这有帮助!
只需终止所有节点进程并启动 npm 服务器并运行应用程序:
第一步:运行命令
killall -9 node
对于 Windows 用户,请运行 taskkill /im node.exe
如果该过程仍然存在,请运行 taskkill /f /im node.exe
。
第二步:运行命令
npm start
第三步:运行命令
react-native run-ios OR react-native run-android
我正在清理我的项目并删除我不再需要的包。
我从我的项目中完全删除了 FBSDK 登录,现在不再出现错误。
“我的代码有效。我不知道为什么我的代码有效”
对于 2021 年的人们: 您很可能缺少一个名为
react-native-blob-util
的依赖项
您在使用世博会吗?您必须删除 expo 并编辑您的 app.json 才能使您的应用程序再次运行。
这里有一个解决方法:https://github.com/wkh237/react-native-fetch-blob/issues/299
不过我自己还没尝试过。我最终完全删除了博览会
编辑:
你可以在 MainApplication.java 中尝试一下吗:
import com.RNFetchBlob.RNFetchBlobPackage;
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNFetchBlobPackage()
);
}
};
来源:https://github.com/wkh237/react-native-fetch-blob/wiki/Manually-Link-Package
我通过
获得了对应用程序本地目录的访问权限 RNFetchBlob.fs.dirs.SDCardApplicationDir
您可以追加
RNFetchBlob.fs.dirs.SDCardApplicationDir+"/files"
进入您的应用程序的文档目录。
只需将您的
rn-fetch-blob
版本更新为“0.10.15”,然后它就适合我了。
就我而言,我没有终止项目一的 Metro 捆绑程序并构建项目二,这就是我的 Metro 接受项目配置的原因。因此,我终止了项目一的 Metro 捆绑器并构建了项目二,它启动了自己的 Metro 捆绑器,一切都运行良好。
您只需在安装 rn-fetch-blob 后终止当前进程并重建应用程序即可解决此错误
所以,安装 rn-fetch-blob 包后最好重新启动 vscode 或您正在使用的编辑器