參考https://github.com/wkh237/react-native-fetch-blob/issues/51 自己做了一下總結:

這個報錯位置在react-native-fetch-blob下fs.js:

DocumentDir :  RNFetchBlob.DocumentDir 

首先看一下最外層package.json下是否有“react-native-fetch-blob”該依賴包

如果沒有

就執行下面命令列:

$ npm install --save react-native-fetch-blob@0.10.5

如果react-native-fetch-blob版本較低,移除原有包
$ rnpm uninstall react-native-fetch-blob
重新按上面安裝
react-native版本< 0.29 
$ rnpm link
react-native版本 0.29.2+
$ react-native link

執行$ rnpm link或rnpm uninstall時可能提示:

參考 https://github.com/rnpm/rnpm 執行命令列:

$ npm install rnpm -g

再執行$ rnpm link或rnpm uninstall

如果出現以下提示:

可參考react-native-fetch-blob\README.md檔案:

react-native版本< 0.29

$ RNFB_ANDROID_PERMISSIONS=true rnpm link

react-native版本 0.29.2+
$ RNFB_ANDROID_PERMISSIONS=true react-native link
自動新增許可權(親測RNFB_ANDROID_PERMISSIONS不是內部或外部命令,未解決)。或者用以下手動新增:

對於5.0及以下的裝置,你必須手動新增以下許可權:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
對Android 6.0 (API level 23),請求許可權參照
https://facebook.github.io/react-native/docs/permissionsandroid.html

如果使用`Android Download Manager`需新增

<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
</intent-filter>

連線成功後,在terminal會出現下面提示

在settings.gradle中新增

 include ':react-native-fetch-blob'
project(':react-native-fetch-blob').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fetch-blob/android')

如果node_modules在工作空間根目錄,../省略

在build.gradle

 dependencies {
compile project(':react-native-fetch-blob') }

在MainApplication或Activity新增包

import com.RNFetchBlob.RNFetchBlobPackage;

```
高版本下
 @Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new RNFetchBlobPackage(),
new MainReactPackage()
);
}

低版本下

 mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.addPackage(new RNFetchBlobPackage())
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "Task", null);
setContentView(mReactRootView);

最近在專案中遇到:react-native-cached-image下react-native-fetch-blob報錯

報錯位置

採用rn版本如下:

"react": "^16.0.0-alpha.12",
"react-native": "^0.45.1",
修改react-native-cached-image如下版本後正常
"react-native-cached-image": "^1.2.5"

本文為博主原創文章,請尊重版權,未經博主允許不得轉載,轉載請註明出處:http://www.cnblogs.com/details-666/p/react-native-fetch-blob.html
執行下面命令或直接執行app
$ react-native run-android