2017-08-01 78 views
1

我試着到的base64圖像上傳到火力地堡存儲與和收到此錯誤:產生反應原型鏈誤差原住民可枚舉密鑰

One of the sources for assign has an enumerable key on the prototype chain. Are you trying to assign a prototype property? We don't allow it, as this is an edge case that we do not support.

運行於[email protected](在V18同樣的問題),並做出反應@ 16.0.0-alpha.12(與世博會v19一起)。

功能即時通訊使用的是以下 來源:https://github.com/aaronksaunders/expo-rn-firebase-image-upload/blob/master/README.md

const addSignService = (signData, imageAsBase64, filename) => {   
    _uploadAsByteArray(convertToByteArray(imageAsBase64), filename, (progress) => { 
    console.log('_uploadAsByteArray callback '+progress); 
    //this.setState({ progress }) 
    }); 
} 

const _uploadAsByteArray = async (pickerResultAsByteArray, filename, progressCallback) => { 
    console.log('_uploadAsByteArray'); 
    try { 

    var metadata = { 
     contentType: 'image/jpeg', 
    }; 

    var ref = storageRef.child('images/'+ firebaseAuth().currentUser.uid + '/' + filename); 
    console.log('before upload'); 

    let uploadTask = ref.put(pickerResultAsByteArray, metadata); 

    uploadTask.on('state_changed', function (snapshot) { 

     progressCallback && progressCallback(snapshot.bytesTransferred/snapshot.totalBytes) 

     var progress = (snapshot.bytesTransferred/snapshot.totalBytes) * 100; 
     console.log('Upload is ' + progress + '% done'); 
     console.log('log test'); 

    }, function (error) { 
     console.log("in _uploadAsByteArray ", error); 

    }, function() { 
     console.log('function'); 
     var downloadURL = uploadTask.snapshot.downloadURL; 
     console.log("_uploadAsByteArray ", uploadTask.snapshot.downloadURL) 

    }); 
    } catch (ee) { 
    console.log("when trying to load _uploadAsByteArray ", ee) 
    } 
} 

const convertToByteArray = (input) => { 
    console.log('convertToByteArray'); 

    var binary_string = atob(input); 

    var len = binary_string.length; 
    var bytes = new Uint8Array(len); 
    for (var i = 0; i < len; i++) { 
    bytes[i] = binary_string.charCodeAt(i); 
    } 
    return bytes 
} 

const atob = (input) => { 
    console.log('atob'); 

    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/='; 

    let str = input.replace(/=+$/, ''); 
    let output = ''; 

    if (str.length % 4 == 1) { 
    throw new Error("'atob' failed: The string to be decoded is not correctly encoded."); 
    } 
    for (let bc = 0, bs = 0, buffer, i = 0; 
    buffer = str.charAt(i++); 

    ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, 
     bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0 
) { 
    buffer = chars.indexOf(buffer); 
    } 

    return output; 
} 

enter image description here

回答

2

當同時呼籲Firebase.put()這個錯誤就要到了該陣營本地/ iOS的遠程調試器被激活。取消激活調試器解決了錯誤,並且該功能正常工作。

感謝Github上的aaronksaunders尋求幫助。 https://github.com/aaronksaunders/expo-rn-firebase-image-upload/issues/3

+0

剛剛從兔子洞裏救了我。謝謝!!經過一整天的工作,沒有運氣,經過 –

+0

。謝謝 –