3

我已经用尽了互联网上的所有线程,但找不到解决方案。我正在尝试使用 react-native-fetch-blob 从我的 react-native 应用程序将照片上传到 firebase。运行 iphone 6 的 RN ios 模拟器。不使用 Expo 我还没有尝试在 android 模拟器上运行,因为 android env 设置在不同的计算机上。

此行导致错误。

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。等我有时间上班再更新。

4

7 回答 7

3

我终于设法安装react-native-fetch-blob并摆脱了Cannot read property 'DocumentDir of undefined'

  1. 按照安装步骤(我使用 npm 安装模块)。
  2. 手动链接包

我认为我之前缺少的重要部分是pod install为 iOS 运行。对于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);
  }

}

希望这可以帮助!

于 2018-10-28T06:48:04.953 回答
1

只需杀死所有节点进程并启动 npm 服务器并运行应用程序:

Step1:运行命令killall -9 node 对于windows用户,如果进程仍然存在,运行taskkill /im node.exe 运行。taskkill /f /im node.exe

第二步:运行命令npm start

第三步:运行命令react-native run-ios OR react-native run-android

于 2019-05-30T10:17:07.533 回答
1

我正在清理我的项目并删除不再需要的包。

我从我的项目中完全删除了 FBSDK 登录,现在不再出现错误。

“我的代码有效。我不知道为什么我的代码有效”

于 2017-12-23T00:40:35.440 回答
0

对于 2021 年的人们:您很可能缺少一个名为react-native-blob-util

于 2021-10-21T14:41:16.420 回答
0

你在使用世博会吗?您必须删除 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

于 2017-12-22T21:02:33.410 回答
0

我通过以下方式访问了应用程序的本地目录

 RNFetchBlob.fs.dirs.SDCardApplicationDir

您可以追加RNFetchBlob.fs.dirs.SDCardApplicationDir+"/files" 进入您的应用程序的文档目录。

于 2018-01-23T06:11:41.400 回答
0

只需将您的rn-fetch-blob版本更新为“0.10.15”,它就对我有用。

于 2020-01-19T05:35:29.403 回答