无法阅读财产' DocumentDir'未定义的React-Native Firebase React-native-fetch-blob

时间:2017-12-22 19:31:58

标签: javascript reactjs firebase react-native react-native-fetch-blob

我已经耗尽了互联网上的所有主题,无法找到解决方案。 我尝试使用react-native-fetch-blob从我的react-native应用程序上传照片到firebase。 RN ios模拟器运行iphone 6。 不使用世博会 由于android env在不同的计算机上设置,我还没有尝试在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链接 ...

在所有这些场景之后进行清理和构建。

我不会列出我已经完成的所有事情,因为我已经在堆栈和RNFB问题/ github上尝试了所有内容。

以下是Xcode的一些截图,RNFB正确连接,或者至少我认为。

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

我找到了这个https://github.com/benjreinhart/react-native-aws3

并且将尝试通过AWS进行锻炼,直到有人可以帮助连接fetch blob。我有时间工作后生病了。

6 个答案:

答案 0 :(得分:1)

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

我完全从我的项目中删除了FBSDK登录,现在没有更多的错误。

"我的代码有效。我不知道为什么我的代码可以运行"

答案 1 :(得分:1)

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

  1. installation steps之后(我使用npm来安装模块)。
  2. Linking the package manually

我认为我以前甚至不曾想到的重要部分是为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);
  }

}

希望这会有所帮助!

答案 2 :(得分:0)

你在使用世博会吗?您必须删除展示广告并修改您的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

答案 3 :(得分:0)

我可以通过

访问app的本地目录
 RNFetchBlob.fs.dirs.SDCardApplicationDir

你可以附加RNFetchBlob.fs.dirs.SDCardApplicationDir+"/files" 进入你的应用程序的文件目录。

答案 4 :(得分:0)

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

第一步:运行命令killall -9 node     对于Windows用户,运行taskkill /im node.exe     如果该过程仍然存在,请运行taskkill /f /im node.exe

第2步:运行命令npm start

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

答案 5 :(得分:0)

只需将您的rn-fetch-blob版本更新为“ 0.10.15”,即可为我使用。