Javascript 此方法似乎破坏了我的react本机代码

Javascript 此方法似乎破坏了我的react本机代码,javascript,react-native,google-cloud-firestore,firebase-storage,Javascript,React Native,Google Cloud Firestore,Firebase Storage,我正在尝试将图像从我的react本机应用程序上载到firebase cloud存储。上传实际上是成功的,我在下面发布的方法很有效。问题是,此方法不知何故破坏了我的应用程序,然后我无法写入firestore数据库中的收藏。我怎么知道?因为当我禁用对该函数的调用时,对另一个“SAVE”方法的调用起作用,我可以将我的文档记录到firestore集合中。仅当执行此方法并将图像上载到firebase存储,然后停止写入firestore数据库收集。我想知道这是否是一个问题 我将非常感谢在这一点上的任何帮助

我正在尝试将图像从我的react本机应用程序上载到firebase cloud存储。上传实际上是成功的,我在下面发布的方法很有效。问题是,此方法不知何故破坏了我的应用程序,然后我无法写入firestore数据库中的收藏。我怎么知道?因为当我禁用对该函数的调用时,对另一个“SAVE”方法的调用起作用,我可以将我的文档记录到firestore集合中。仅当执行此方法并将图像上载到firebase存储,然后停止写入firestore数据库收集。我想知道这是否是一个问题

我将非常感谢在这一点上的任何帮助

谢谢

uploadImage(uri, mime, name) {
        console.log("inside uploadImage function");
        try{
            const Blob = RNFetchBlob.polyfill.Blob;
            const fs = RNFetchBlob.fs;
            window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
            window.Blob = Blob;  
            var imgUri = uri; 
            var uploadBlob = null;
            const uploadUri = Platform.OS === 'ios' ? imgUri.replace('file://', '') : imgUri;
            var imageKey = (this.state.currentImageIndex).toString();//this.guidGenerator();
            var imageRef = firebase.storage().ref(`/images/${imageKey}`);

            fs.readFile(uploadUri, 'base64')
            .then(data => {
                return Blob.build(data, { type: `${mime};BASE64` });
            })
            .then(blob => {
                uploadBlob = blob;
                var uploadTask = imageRef.put(blob, { contentType: mime, name: name });
                uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, // or 'state_changed'
                    (snapshot) => {
                        // Get task progress, including the number of bytes uploaded and the total number of bytes to be uploaded
                        var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
                        console.log('Upload is ' + progress + '% done');
                        switch (snapshot.state) {
                        case firebase.storage.TaskState.PAUSED: // or 'paused'
                            console.log('Upload is paused');
                            break;
                        case firebase.storage.TaskState.RUNNING: // or 'running'
                            console.log('Upload is running');
                            break;
                        }
                    }, (error) => {
                        console.log(error);
                    // A full list of error codes is available at
                    // https://firebase.google.com/docs/storage/web/handle-errors
                    switch (error.code) {
                        case 'storage/unauthorized':
                        // User doesn't have permission to access the object
                        break;

                        case 'storage/canceled':
                        // User canceled the upload
                        break;

                        case 'storage/unknown':
                        // Unknown error occurred, inspect error.serverResponse
                        break;
                    }
                    }, () => {
                        // Upload completed successfully, now we can get the download URL
                        uploadTask.snapshot.ref.getDownloadURL().then((downloadURL)=> {
                            try{
                                console.log('File available at', downloadURL);

                                uploadBlob.close();
                                fs.unlink(uploadUri);
                                console.log("blob closed");

                                this.setState({currentImageIndex:this.state.currentImageIndex+1}, ()=>{
                                    if(this.state.pickType ==='multi'){
                                        if(this.state.currentImageIndex<this.state.totalNumImages){
                                            console.log("call openCropper");
                                            this.openCropper();
                                        }else{
                                            this.setState({totalNumImages:0});
                                            this.setState({currentImageIndex:0});
                                        }
                                    }
                                });
                            }catch(err){
                                console.log(err);
                            }
                        }).catch((err)=>{
                            console.log(err);
                        });
                    });
            })
            .catch((err)=>{
                console.log("ERROR READING FILE: fs.readFile!!");
                console.log(err);
            });
        }
        catch(err){
            console.log(err);
        }
    }
uploadImage(uri、mime、名称){
log(“内部上传图像功能”);
试一试{
const Blob=RNFetchBlob.polyfill.Blob;
const fs=RNFetchBlob.fs;
window.XMLHttpRequest=RNFetchBlob.polyfill.XMLHttpRequest;
Blob=Blob;
var imgUri=uri;
var uploadBlob=null;
const uploadUri=Platform.OS=='ios'?imgUri.replace('file://',''):imgUri;
var imageKey=(this.state.currentImageIndex.toString();//this.guidgeGenerator();
var imageRef=firebase.storage().ref(`/images/${imageKey}`);
fs.readFile(上传URI,'base64')
。然后(数据=>{
返回Blob.build(数据,{type:`${mime};BASE64`});
})
.然后(blob=>{
uploadBlob=blob;
var uploadTask=imageRef.put(blob,{contentType:mime,name:name});
uploadTask.on(firebase.storage.TaskEvent.STATE\u已更改,//或“STATE\u已更改”
(快照)=>{
//获取任务进度,包括上载的字节数和要上载的总字节数
var progress=(snapshot.bytesttransfered/snapshot.totalBytes)*100;
log('Upload is'+progress+'%done');
交换机(snapshot.state){
案例firebase.storage.TaskState.PAUSED://或“PAUSED”
log('上载已暂停');
打破
案例firebase.storage.TaskState.RUNNING://或“RUNNING”
log(“正在运行上载”);
打破
}
},(错误)=>{
console.log(错误);
//有关错误代码的完整列表,请访问
// https://firebase.google.com/docs/storage/web/handle-errors
开关(错误代码){
“存储/未授权”案例:
//用户没有访问该对象的权限
打破
案例“存储/取消”:
//用户取消了上传
打破
案例“存储/未知”:
//发生未知错误,请检查错误。serverResponse
打破
}
}, () => {
//上传成功,现在我们可以获得下载URL
uploadTask.snapshot.ref.getDownloadURL()。然后((downloadURL)=>{
试一试{
log('File available at',downloadURL);
uploadBlob.close();
fs.unlink(上传URI);
控制台日志(“blob关闭”);
this.setState({currentImageIndex:this.state.currentImageIndex+1},()=>{
if(this.state.pickType==='multi'){
如果(this.state.currentImageIndex{
控制台日志(err);
});
});
})
.catch((错误)=>{
log(“读取文件时出错:fs.readFile!!”;
控制台日志(err);
});
}
捕捉(错误){
控制台日志(err);
}
}

您是否从任何
catch
语句中获得任何输出?@Dan No.无。您是否从任何
catch
语句中获得任何输出?@Dan No.无。