यह सच है कि आधुनिक ब्राउज़रों के साथ, त्रुटियों के लिए window.onerror हुकिंग करना जो सभी तरह से शीर्ष पर बुलबुला बनाता है साथ ही अजाक्स त्रुटियों के लिए jQuery इवेंट हैंडलर जोड़ने से व्यावहारिक रूप से आपके क्लाइंट कोड में डाली गई सभी त्रुटि ऑब्जेक्ट पकड़ लेंगे। यदि आप मैन्युअल रूप से window.onerror के लिए एक हैंडलर स्थापित कर रहे हैं, तो आधुनिक ब्राउज़रों में यह किया जाता है window.addEventListener('error', callback)
, जबकि IE8 / 9 में आपको कॉल करने की आवश्यकता होती है
window.attachEvent('onerror', callback)
।
ध्यान दें कि आपको उस वातावरण पर विचार करना चाहिए जिसमें ये त्रुटियां नियंत्रित की जा रही हैं, और ऐसा करने का कारण। उनके स्टैकट्रैक्स के साथ जितनी संभव हो उतनी त्रुटियों को पकड़ना एक बात है, लेकिन आधुनिक एफ 12 देव टूल्स का आगमन स्थानीय स्तर पर लागू और डिबगिंग करते समय इस उपयोग के मामले को हल करता है। ब्रेकपॉइंट्स आदि आपको हैंडलर से अधिक डेटा उपलब्ध कराएंगे, विशेष रूप से थर्ड-पार्टी लाइब्रेरी द्वारा फेंकी गई त्रुटियों के लिए जो कॉर्स अनुरोधों से भरी हुई थीं। आपको यह डेटा प्रदान करने के लिए ब्राउज़र को निर्देश देने के लिए अतिरिक्त कदम उठाने की आवश्यकता है।
मुख्य मुद्दा यह डेटा उत्पादन में प्रदान कर रहा है, क्योंकि आपके उपयोगकर्ता ब्राउज़रों और संस्करणों की एक व्यापक श्रेणी को चलाने की गारंटी देते हैं, जिससे आप संभवतः परीक्षण कर सकते हैं, और आपकी साइट / ऐप अप्रत्याशित तरीके से टूट जाएंगे, चाहे आप कितने भी क्यूए पर फेंक दें। यह।
इसे संभालने के लिए, आपको एक उत्पादन त्रुटि ट्रैकर की आवश्यकता होती है, जो आपके उपयोगकर्ता के ब्राउज़रों में फेंकी गई प्रत्येक त्रुटि को उठाता है, जैसा कि वे आपके कोड का उपयोग करते हैं, और उन्हें एक अंतिम बिंदु पर भेजते हैं जहां डेटा आपके द्वारा देखा जा सकता है और वे बग को ठीक करने के लिए उपयोग किए जाते हैं। । रेगन में (अस्वीकरण: मैं रेगन में काम करता हूं) हमने इसके लिए एक महान अनुभव प्रदान करने के प्रयास में लगा दिया है, क्योंकि बहुत से नुकसान और मुद्दों पर विचार करना है कि एक भोली कार्यान्वयन याद आएगा।
उदाहरण के लिए, संभावना है कि आप अपनी जेएस परिसंपत्तियों को बंडल और मिनिमाइज करेंगे, जिसका अर्थ है कि मिनिफ़ाइज्ड कोड से फेंकी गई त्रुटियों में जंक स्टैकट्रीज़ होंगे जो मैंगल्ड चर नामों के साथ होंगे। इसके लिए, आपको स्रोत मानचित्र बनाने के लिए अपने बिल्ड टूल की आवश्यकता होती है (हम पाइपलाइन के इस हिस्से के लिए UglifyJS2 की अनुशंसा करते हैं), और इनको स्वीकार करने और संसाधित करने के लिए आपका त्रुटि ट्रैकर, मानव-पठनीय स्टैकट्रैक को मानव-पठनीय में बदल देता है। रेगन यह सब बॉक्स से बाहर करता है, और इसमें एक एपीआई एंडपॉइंट शामिल होता है जो स्रोत मानचित्रों को स्वीकार करता है क्योंकि वे आपकी निर्माण प्रक्रिया द्वारा उत्पन्न होते हैं। यह महत्वपूर्ण है क्योंकि उन्हें गैर-सार्वजनिक रखने की आवश्यकता होती है, अन्यथा कोई भी आपके कोड को अस्वीकार कर सकता है, इसके उद्देश्य को नकार सकता है।
Raygun4js क्लाइंट लाइब्रेरी भी साथ आता है window.onerror
के रूप में jQuery आउट-ऑफ-द-बॉक्स हुक, दोनों आधुनिक और विरासत ब्राउज़रों के लिए और साथ ही, इसलिए इस सेट करने के लिए आप केवल जोड़ने की जरूरत है:
<script type="text/javascript" src="//cdn.raygun.io/raygun4js/raygun.min.js" </script>
<script>
Raygun.init('yourApiKey').attach();
</script>
इसमें कार्यक्षमता का एक गुच्छा भी है, जिसमें त्रुटि पेलोड को भेजने से पहले टैग और कस्टम डेटा जोड़ने वाले मेटाडेटा, त्रुटि देखने वाले उपयोगकर्ता के मेटाडेटा को जोड़ने की क्षमता शामिल है। यह उपर्युक्त तृतीय-पक्ष CORS लिपियों से अच्छे स्टैक के निशान प्राप्त करने के दर्द को भी दूर करता है, जो कि 'स्क्रिप्ट त्रुटि' (जिसमें कोई त्रुटि संदेश नहीं है, और स्टैक ट्रेस नहीं है) को हल करता है।
एक और अधिक महत्वपूर्ण मुद्दा यह है कि वेब पर विशाल दर्शकों के कारण, आपकी साइट प्रत्येक त्रुटि के कई हजारों डुप्लिकेट इंस्टेंसेस उत्पन्न करेगी। Raygun जैसी त्रुटि ट्रैकिंग सेवा में त्रुटि समूहों में रोल करने के लिए स्मार्ट होते हैं ताकि आप सूचनाओं की बाढ़ में न डूबें, और आप प्रत्येक वास्तविक त्रुटि को तय होने के लिए तैयार देखते हैं।