2014-10-20 15 views
7

के नवीनतम संस्करण में प्रोजेक्ट को अपग्रेड करते समय कंसोल में # " का संपत्ति कनेक्शन सेट नहीं कर सकता है, आज मैंने संस्करण 3.5 से संस्करण 4.0 तक कॉर्डोवा-सीएलआई को अपग्रेड किया। इसके बाद, मैंने एंड्रॉइड के नवीनतम संस्करण में एक परियोजना के मंच समर्थन को अद्यतन किया (क्योंकि वे अब अलग से अपडेट हो गए हैं)। TypeError "कॉर्डोवा 4.0.0

तब से मैं दिखा जब भी मैं cordova run android चलाने इस त्रुटि मिलती है, मैं निम्नलिखित त्रुटि मिलती है:

Uncaught TypeError: Cannot set property connection of # which has only a getter at file:///android_asset/www/cordova.js:512

नतीजतन, एप्लिकेशन में होने वाली घटनाओं का एक बहुत रन नहीं मिलता है, जिससे वह ऐप काम नहीं करेगा।

+0

यह नेटवर्क-सूचना प्लगइन के साथ एक बग हो सकता है: https://issues.apache.org/jira/browse/CB-7848 इस बीच मैंने जॉन के सुझाव का पालन किया। – th3hamm0r

+1

संबंधित समस्या है: https://issues.apache.org/jira/browse/CB-7868 – mwager

उत्तर

3

मैं मुलाकात एंड्रॉयड कॉर्डोबा 3.6.4 के साथ एक ही समस्या CLI 4.1.2 के माध्यम से मिला है। मैंने इस मुद्दे के दो फिक्सिंग को मर्ज करने की कोशिश की: सीबी -7868। पहला फिक्सिंग लिंक सीबी -7868, https://github.com/apache/cordova-js/pull/88 लिंक के साथ देखा जा सकता है। दूसरी फिक्सिंग सीबी -7868 पर टिप्पणी पर है।

देखें *************

function clobber(obj, key, value) { 

exports.replaceHookForTesting(obj, key); 

obj[key] = value; 
var needsProperty = false; 
try { obj[key] = value; } 
catch (e) { needsProperty = true; } 
// Getters can only be overridden by getters. 
if (obj[key] !== value) { 
    if (needsProperty || obj[key] !== value) { 
     utils.defineGetter(obj, key, function() { return value; } 
); 

उन दो फिक्सिंग के साथ

। Android API14 (4.0) और API15 (4.0.3) पर कोई त्रुटि रिपोर्ट नहीं है। लेकिन, मैंने कोशिश नहीं की कि संबंधित प्लगइन्स काम नहीं कर सकते हैं। इसका मतलब है कि मुझे नहीं पता कि फिक्सिंग सही है या नहीं।

इसके अलावा, मैं आईओएस प्लेटफॉर्म के लिए CLI 4.1.2 के माध्यम से कॉर्डोबा 3.7.0 मिला है। मैं फिक्सिंग देख सकता हूं, https://github.com/apache/cordova-js/pull/88, 3.7.0 जेएस पर लागू किया गया है। लेकिन, समारोह, clobber, अभी भी फिक्सिंग से ऊपर नहीं है। इसके अलावा, एंड्रॉइड कॉर्डोवा के लिए 3.7.0 उपलब्ध नहीं है। एंड्रॉइड मंच के लिए यह अभी भी 3.6.4 है।

+0

तक कॉर्डोवा-एंड्रॉइड का अगला संस्करण जारी किया गया है, यह एक उचित समाधान है।पहला पैच यूआरएल https://github.com/apache/cordova-js/pull/88.patch है, और दूसरा पैच यूआरएल से पैच फ़ाइल में सहेजा जाना है: https: // git-wip-us .apache.org/repos/asf? p = cordova-js.git; a = पैच; एच = f0ceadf; एचपी = 91157c2e1bf3eb098c7e2ab31404e895ccb0df2a –

7

मैं Cordova को अद्यतन करने के बाद, लेकिन केवल बहुत पुरानी Android फोन पर यह हो रही शुरू कर दिया। समाधान के लिए मैं समारोह cordova.js में त्रुटि (पीटना) पैदा करने की सामग्री के चारों ओर एक आज़माएं/कैच ब्लॉक कर दिया: जाहिर है

 

    function clobber(obj, key, value) { 
     try { 
     exports.replaceHookForTesting(obj, key); 
     obj[key] = value; 
     // Getters can only be overridden by getters. 
     if (obj[key] !== value) { 
      utils.defineGetter(obj, key, function() { 
       return value; 
      }); 
     } 
     } 
     catch (e){ 
     console.error('clobber error '+e+', obj='+JSON.stringify(obj)+', key='+JSON.stringify(key)+', value='+JSON.stringify(value)); 
     } 
    } 

यह सबसे अच्छा ठीक नहीं है, लेकिन कम से कम इसे प्रारंभ करने देता है पूरा लगता है और मेरे ऐप को प्रभावित नहीं कर रहा है।

+0

मुझे लगता है कि यह सिर्फ एक रिपोर्ट नहीं है जिसे नवीनतम संस्करण में तय किया जाएगा। दिलचस्प है कि यह केवल पुराने उपकरणों के साथ होता है। हमारा ऐप देव टैबलेट एंड्रॉइड 4.0.3 चलाता है। –

+1

बिल्डिंग पर प्रतिस्थापित किए बिना आप 'cordova.js' को कैसे संपादित करते हैं? – mwager

+1

ऐसा प्रतीत होता है कि आपको ~/platforms/android/platform_www फ़ोल्डर में Cordova.js की प्रति को संपादित करना चाहिए। मैंने कोशिश की और एक कॉर्डोवा के बाद www ~/प्लेटफॉर्म/एंड्रॉइड/संपत्ति/www फ़ोल्डर संस्करण में दिखाए गए परिवर्तनों को एंड्रॉइड तैयार करने के बाद। –

0

मुझे एक ही समस्या है। इसे हल करने के लिए, मैंने "cordova.js" के पुराने संस्करण की तुलना की और 1187 से 1196 और 1316 से 1325 तक लाइनों को हटा दिया। ये पंक्तियां "else {}" फ़ंक्शन "प्रतिस्थापन()" के हिस्से हैं। यह अब मेरे ऐप के लिए काम करता है।

1

इस post के अनुसार, समस्या का समाधान हो गया है।

वैसे, मुझे आपको बताना है कि मैंने एंड्रॉइड प्लेटफ़ॉर्म के लिए कॉर्डोवा प्रोजेक्ट को अपडेट करने के लिए सभी आदेश चलाए हैं लेकिन मुझे cordova.js संस्करण 3.7.2 में अपडेट नहीं किया जा सकता है।

+0

आप आधिकारिक तौर पर जारी नहीं होने तक, AFAIK नहीं कर सकते। यह पृष्ठ [https://github.com/apache/cordova-android/blob/master/RELEASENOTES.md] दिखाता है कि जारी संस्करण अभी भी 3.6.4 है। –