我正在使用npm包react-native-fetch-blob 我已按照git repository中的所有步骤使用该包。
然后我使用以下行导入了包:
var RNFetchBlob = require('react-native-fetch-blob');
我正在尝试从服务器请求包含图像的BLOB。
这是我的主要方法。
fetchAttachment: function(attachment_uri) {
var authToken = 'youWillNeverGetThis!'
var deviceId = '123';
var xAuthToken = deviceId+'#'+authToken
//Authorization : 'Bearer access-token...',
// send http request in a new thread (using native code)
RNFetchBlob.fetch('GET', config.apiRoot+'/app/'+attachment_uri, {
'Origin': 'http://10.0.1.23:8081',
'X-AuthToken': xAuthToken
})
// when response status code is 200
.then((res) => {
// the conversion is done in native code
let base64Str = res.base64()
// the following conversions are done in js, it's SYNC
let text = res.text()
let json = res.json()
})
// Status code is not 200
.catch((errorMessage, statusCode) => {
// error handling
});
}
我一直收到以下错误:
"可能未处理的Promise Refection(id:0):TypeError:RNFetchBlob.fetch不是函数"。
有什么想法吗?
答案 0 :(得分:4)
问题是您正在使用带有针对ES6 / ES2015编写的库的ES5样式require语句。您有两种选择:
ES5:
import RNFetchBlob from 'react-native-fetch-blob'
ES6:
HashMap<String, Object> merchantDetailMap = new HashMap<String, Object>();
if(dataAndSize != null)
{
ResultList<VoltMerchantDetail> tempMerchantList = (ResultList<VoltMerchantDetail>) dataAndSize.get("VoltDBDataList");
vMerchantList = (List<VoltMerchantDetail>) tempMerchantList;
for(VoltMerchantDetail vMerchant : vMerchantList){
HashMap<String, Object> merchantDetails = new HashMap<String, Object>();
merchantDetails.put("toActorMsisdn", vMerchant.getToActorMsisdn());
merchantDetails.put("fromActorMsisdn", vMerchant.getFromActorMsisdn());
merchantDetails.put("customCol1", vMerchant.getCustomCol1());
merchantDetails.put("customCol2", vMerchant.getCustomCol2());
merchantDetails.put("customCol3", vMerchant.getCustomCol3());
merchantDetails.put("customCol4", vMerchant.getCustomCol4());
merchantDetails.put("customCol5", vMerchant.getCustomCol5());
merchantDetailMap.put(vMerchant.getMerUsername(),merchantDetails);
}
答案 1 :(得分:1)
我的导入看起来像这样:从 'rn-fetch-blob' 导入 RNFetchBlob;
但我有一个错误:TypeError: RNFetchBlob.scanFile is not a function
我的代码:
const downloadAudio = async () => {
const { config, fs } = RNFetchBlob;
const meditationFilesPath =
Platform.OS == 'android'
? `${fs.dirs.DownloadDir}/meditations/${id}`
: `${fs.dirs.DocumentDir}/meditations/${id}`;
let audio_URL = track;
let options = {
fileCache: true,
path: meditationFilesPath + `/${id}.mp3`,
addAndroidDownloads: {
// Related to the Android only
useDownloadManager: true,
notification: true,
path: meditationFilesPath + `/${id}.mp3`,
description: 'Audio',
},
};
try {
const resAudio = await config(options).fetch('GET', audio_URL.uri);
if (resAudio) {
const audio = await RNFetchBlob.fs.scanFile([
{ path: resAudio.path(), mime: 'audio/mpeg' },
]);
console.log('res -> ', audio);
Alert.alert('Audio Downloaded Successfully.');
}
} catch (error) {
console.error('error from downloadAudio', error);
}
};