[英]Cannot read property 'DocumentDir' of undefined React-Native Firebase React-native-fetch-blob
我已经用尽了互联网上的所有线程,但找不到解决方案。 我正在尝试使用 react-native-fetch-blob 从我的 react-native 应用程序将照片上传到 firebase。 RN ios simulator running iphone 6. Not using Expo I have NOT tried running on android emulator yet, due to android env setup on different computer.
此行导致错误。
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 链接...
在所有这些场景之后清理和构建。
我不会列出我所做的一切,因为我已经在堆栈和 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); } }
希望这可以帮助!
我正在清理我的项目并删除我不再需要的包。
我从我的项目中完全删除了 FBSDK 登录,现在没有更多错误。
“我的代码有效。我不知道为什么我的代码有效”
只需杀死所有节点进程并启动 npm 服务器并运行应用程序:
步骤1:运行命令killall -9 node
对于windows用户,运行taskkill /im node.exe
taskkill /f /im node.exe
如果进程仍然存在,运行taskkill /f /im node.exe
。
第二步:运行命令npm start
步骤 3:运行命令react-native run-ios OR react-native run-android
你在使用世博会吗? 您必须删除 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”,然后它对我有用。
对于 2021 年的人们:您很可能缺少一个名为react-native-blob-util
的依赖react-native-blob-util
就我而言,我没有终止项目一的 Metro 捆绑器并构建项目二,这就是我的 Metro 接受项目配置的原因。 所以我终止了项目一的地铁捆绑器并构建项目二,它启动了自己的地铁捆绑器,一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.