Firebase Storage: string não corresponde ao formato base64: caractere inválido encontrado. Somente quando a depuração está desativada
Estou tentando fazer upload de um arquivo de imagem para o armazenamento da base de firmas, salvar o URL de download e carregá-lo após a conclusão do upload. Quando executo o aplicativo com o debug js remotamente, ele funciona bem. Quando desativo o modo de depuração, ele pára de funcionar com a exceção de formato inválido. O mesmo acontece quando eu corro em um dispositivo real (iOS e Android)
Os dados de resposta base64 do React Native Image Picker parecem estar corretos
Aqui está o meu código
...
import * as ImagePicker from 'react-native-image-picker'; //0.26.10
import firebase from 'firebase'; //4.9.1
...
handleImagePicker = () => {
const { me } = this.props;
const options = {
title: 'Select pic',
storageOptions: {
skipBackup: true,
path: 'images'
},
mediaType: 'photo',
quality: 0.5,
};
ImagePicker.showImagePicker(options, async (response) => {
const storageRef = firebase.storage().ref(`/profile-images/user_${me.id}.jpg`);
const metadata = {
contentType: 'image/jpeg',
};
const task = storageRef.putString(response.data, 'base64', metadata);
return new Promise((resolve, reject) => {
task.on(
'state_changed',
(snapshot) => {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log('Upload is ' + progress + '% done');
},
(error) =>
console.log(error),
() => {
this.onChangeProfileImage();
}
);
});
}
}
onChangeProfileImage = async () => {
const { me } = this.props;
const storageRef = firebase.storage().ref(`/profile-images/user_${me.id}.jpg`);
const profileImageUrl = await new Promise((resolve, reject) => {
storageRef.getDownloadURL()
.then((url) => {
resolve(url);
})
.catch((error) => {
console.log(error);
});
});
// some more logic to store profileImageUrl in the database
}
Alguma idéia de como resolver isso?
Desde já, obrigado.