получение ошибки при загрузке изображения в хранилище firebase в React Native с использованием response-native-fetch-blob

создание приложения React-Native с использованием библиотеки firebase и react-native-fetch-blob. Я не могу загрузить изображение в firebase из-за этой ошибки java.lang.String com.facebook.react.bridge.ReadableMap.string(java.lang.string) on a null object Reference.

он также дает мне предупреждение о possible unhandled promise Rejection (id=0): type undefined не является функцией (оценка 'filepath.replace (' file: //, ") ') при попытке использовать этот код библиотеки react-native-fetch-blob:

function uploadImage() {

        return new Promise((resolve, reject) => {
            let imgUri = 'content://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F80/ORIGINAL/NONE/1685675380'; let uploadBlob = null;
            const uploadUri = imgUri;

            const imageRef = firebase.storage().ref();
            const name = 'myimg';
            mime = 'image/jpeg';
            fs.readFile(uploadUri, 'base64')
                .then(data => {
                    return Blob.build(data, { type: `${mime};BASE64` });
                })
                .then(blob => {
                    uploadBlob = blob;
                    return imageRef.put(blob, { contentType: mime, name: name });
                })
                .then(() => {
                    uploadBlob.close()
                    return imageRef.getDownloadURL();
                })
                .then(url => {
                    resolve(url);
                })
                .catch(error => {
                    reject(error)
                })
        })
    }

dependencies": {
"fbjs": "^0.8.16",
"react": "^16.3.1",
"react-native": "^0.55.3",
"react-native-firebase": "^4.1.0",
"react-native-image-picker": "^0.26.10",
"react-navigation": "^2.6.0",
"rn-fetch-blob": "^0.10.11"

}

снимок ошибки:  введите описание изображения здесь

снимок предупреждения:  введите описание изображения здесь




Ответы (1)


Вам не нужна библиотека rn-fetch-blob для загрузки изображения в firebase, если у вас есть react-native-image-picker библиотека.

Основная причина этой ошибки исходит из:

type undefined is not a funtion (evaluating 'filepath.replace('file://,")')..

Это был триггер где-то из библиотеки react-native-firebase, потому что вы передали неверные данные параметров в imageRef.put(blob ..., который был сгенерирован из библиотеки rn-fetch-blob.

Вместо использования библиотеки blob из rn-fetch-blob вам просто нужно передать данные uri, и он должен работать. Позвольте мне показать вам, как это сделать.

//when user pick an image from local storage
ImagePicker.showImagePicker(options, (response) => {
  if (response.didCancel) {
    console.log('User cancelled photo picker');
  }
  else if (response.error) {
    console.log('ImagePicker Error: '+response.error);
  }
  else if (response.customButton) {
    console.log('User tapped custom button: '+response.customButton);
  }
  else {
    firebase.storage().ref().child('myimg.jpg')
    .put(response.uri, { contentType : 'image/jpeg' }) //--> here just pass a uri
    .then((snapshot) => {
      console.log(JSON.stringify(snapshot.metadata));
    })
  });
}

Для обработки ошибок вы можете обратиться к официальному документу Firebase Storage здесь

person ggDeGreat    schedule 30.08.2018