【问题标题】:npm react-native-fetch-blob - "RNFetchBlob.fetch is not a function"npm react-native-fetch-blob - “RNFetchBlob.fetch 不是函数”
【发布时间】:2016-11-22 06:41:07
【问题描述】:

我正在使用 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 is not a function”。

有什么想法吗?

【问题讨论】:

  • 试试 var RNFetchBlob = require('react-native-fetch-blob').default;
  • @Cherniv 根据the manual,它应该是import RNFetchBlob from ...。这就是可能需要.default 的原因。
  • @rmevans9 那行得通。把它写成答案,我会接受这个解决方案。谢谢。

标签: node.js npm react-native fetch


【解决方案1】:

问题是您正在使用 ES5 风格的 require 语句以及针对 ES6/ES2015 编写的库。你有两个选择:

ES5:

var RNFetchBlob = require('react-native-fetch-blob').default

ES6:

import RNFetchBlob from 'react-native-fetch-blob'

【讨论】:

    【解决方案2】:

    我的导入如下所示:import RNFetchBlob from 'rn-fetch-blob';

    但我遇到了一个错误: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);
        }
      };

    【讨论】:

      猜你喜欢
      • 2015-09-06
      • 2018-11-24
      • 2017-07-27
      • 1970-01-01
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      相关资源
      最近更新 更多