2017-08-01 77 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

。谢谢 –