2012-01-19 6 views
8

तो अभी हमारे पास हमारे कोड या तृतीय पक्ष कोड से त्रुटियों की रिपोर्ट करने के लिए कुछ सामान्य कोड है। हमारी परियोजना आईओएस के लिए एक जेक्यूएम/फोनगैप परियोजना है। क्या हो रहा है कि हम हमेशा एक ही बेकार त्रुटि प्राप्त करते हैं ... TypeError: 'अपरिभाषित' कोई फ़ंक्शन नहीं है ... कोई लाइन नंबर या अन्य सहायक जानकारी नहीं है। क्या कोई तरीका है कि मैं कोड को बदल सकता हूं ताकि यह पता चल सके कि क्या अनिश्चित है या यह कहां है?हमारी जावास्क्रिप्ट त्रुटि रिपोर्टिंग में सुधार

window.onerror = function myErrorHandler(errorMsg, url, lineNumber) { 
    //Handle errors not in a jquery event handler 
    //DebugMessage(errorMSg + " "+ url + " " + lineNumber); 
    var ex = new Error(errorMsg, url, lineNumber); 
    HandleError(ex, "window.onerror"); 
     //HandleError sends the error object to 
     //a webservice to log the error. 
    return true; 
}; 

जावास्क्रिप्ट त्रुटियों को डिबग करने पर कोई भी युक्तियाँ भी मददगार होंगी।

+1

के बारे में एक गुच्छा पता है कि मैं एक ही समस्या है। यह UIWebView की एक बग की तरह दिखता है, क्योंकि जब मैं सफारी/क्रोम पर एक ही कोड चलाता हूं, तो लाइन नम्बर परिभाषित किया जाता है। हमें ऐप्पल को बग की रिपोर्ट करनी चाहिए: https://bugreport.apple.com - जितना अधिक हम इस बग पर रिपोर्ट भरेंगे, उतना ही यह महत्वपूर्ण हो जाएगा (बग के लिए मतदान करना संभव नहीं है, इसलिए ऐप्पल टीम बग रिपोर्ट गिनती को प्राथमिकता देती है डुप्लिकेट की संख्या)। – Samuel

+0

यह सुनिश्चित नहीं है कि यह मोबाइल के लिए काम करता है लेकिन मैंने इसे पहले इस्तेमाल किया है: https://github.com/posabsolute/jQuery-Error-Handler-Plugin मोबाइल सफारी में डीबग मोड चालू कर रहा है और console.log ('त्रुटि का उपयोग कर रहा है संदेश'); साथ ही साथ काम करता है –

+0

प्लगइन के लिए कोड को देखते हुए, यह उपरोक्त कोड जैसा ही है (ईमेल को कोड के साथ आतंक को बदलता है/त्रुटि लॉग करता है)। तो मुझे अभी भी TypeError मिल जाएगा: 'अपरिभाषित' एक फ़ंक्शन नहीं है, रेखा: अपरिभाषित। जब मैं समस्या को हल करने के लिए एक रास्ता तलाश रहा हूं, तो मैं बग रिपोर्ट भर दूंगा। – Twomz

उत्तर

0

क्या आपने Ripple के बारे में सुना है? यह ChromeG अनुप्रयोगों का परीक्षण करने के लिए डिज़ाइन किए गए क्रोम के लिए एक मोबाइल एमुलेटर है।

इससे आपको डिवाइस पर डीबग करने से पहले अपनी त्रुटियों को ढूंढने में मदद मिल सकती है।

1

हाल के महीनों में, ब्राउज़र ने अधिक जानकारी प्रदान करने के लिए window.onerror के हस्ताक्षर को बढ़ा दिया है।

window.onerror = function(msg, file, line, col, error) { 

    // backwards compat 
    if (!error) { 
    error = new Error(msg); 
    } 

    // send error to your logger 

} 

यह आपको एक बहुत अधिक जानकारी देना चाहिए। लेकिन अभी भी ऐसी चीजें हैं जहां आपको बेहतर संदर्भ की आवश्यकता है। आपको TrackJS जैसे कुछ तृतीय-पक्ष टूल देखना चाहिए जो स्वचालित रूप से आपको यह देते हैं, साथ ही त्रुटि के बारे में अतिरिक्त जानकारी भी दी जाती है।

अस्वीकरण: मैं TrackJS के मूल लेखकों में से एक हूं, इसलिए मैं JavaScript त्रुटियों :)