सभी जावास्क्रिप्ट त्रुटियों को पकड़ें और उन्हें सर्वर पर भेजें


232

अगर किसी को विश्व स्तर पर जावास्क्रिप्ट त्रुटियों को संभालने में अनुभव था और क्लाइंट ब्राउज़र से एक सर्वर पर भेज दिया तो मुझे आश्चर्य हुआ।

मुझे लगता है कि मेरी बात बिल्कुल स्पष्ट है, मैं ग्राहक अपवाद पर होने वाले हर अपवाद, त्रुटि, संकलन त्रुटि आदि को जानना चाहता हूं और उन्हें रिपोर्ट करने के लिए सर्वर पर भेजना चाहता हूं।

मैं मुख्य रूप से MooTools और head.js(JS साइड के लिए) और Django का उपयोग सर्वर साइड के लिए कर रहा हूं ।


20
मैं यह नहीं देखता कि यह प्रश्न अस्पष्ट क्यों है।
माइकल हिलस

3
प्रश्न को फिर से खोलने के लिए दो बार वोट किया गया, लेकिन बिना किसी भाग्य के। यह पूरी तरह से अस्पष्ट है कि यह प्रश्न अस्पष्ट के रूप में क्यों बंद है।
मुहम्मद उस्मान

7
@ andrew-barber - अगर इतने सारे उपयोगकर्ता इस सवाल को प्रासंगिक मानते हैं तो इसे उभारने के लिए तब शायद यह स्पष्ट न हो कि यह मुद्दा आपके साथ है ??
इपिर

5
यह सवाल न केवल स्पष्ट है, बल्कि यह भी
रेखांकित किया गया है

जवाबों:


16

मैंने हाल ही में उत्पादन पर संतरी का परीक्षण किया और यह ठीक काम करता है (जेएस और PHP जैसी अन्य भाषाएं)

1- यह खुला स्रोत है (आप इसे अपने सर्वर पर स्थापित कर सकते हैं) 2- आप मुफ्त योजना (100 रिपोर्ट / दिन) का उपयोग कर सकते हैं

या इसे अपने सर्वर पर स्थापित करें: github.com/getsentry


ध्यान दें कि उनके पास शैक्षणिक संस्थानों के लिए एक असीमित मुफ्त योजना है
क्रिश्चियनविंग्स

8
अब खुला स्रोत नहीं लगता है, सभी विकल्पों का भुगतान किया जाता है?
डेविड

4
@DavidCumps वे अभी भी मुफ्त सेवा (परीक्षण) की पेशकश करते हैं, लेकिन आपको केवल 7 दिनों का बग इतिहास मिलता है या आप इसे अपने स्वयं के सर्वर पर स्थापित कर सकते हैं क्योंकि इसका खुला स्रोत ( github.com/getsentry )
Tarek

1
Google टैग प्रबंधक के पास एक जावास्क्रिप्ट त्रुटि श्रोता है, शायद यह जाँचने के लायक है, खासकर यदि आप पहले से ही GA का उपयोग कर रहे हैं
एड्रियन गनवन

इसके लिए आपको TrackJS को भी जांचना चाहिए । यह एक सशुल्क सेवा है, लेकिन यह इस बारे में एक संदर्भ प्रदान करती है कि उपयोगकर्ता डीबगिंग के लिए त्रुटि स्थिति में कैसे आया। मैं डेवलपर्स पर हूं और इसके साथ टन के कीड़े तय किए हैं :)
टॉड गार्डनर

318

मैं बाहर की जाँच करेंगे window.onerror

उदाहरण:

window.onerror = function(message, url, lineNumber) {  
  //save error and send to server for example.
  return true;
};  

ध्यान रखें कि सही लौटने से डिफ़ॉल्ट हैंडलर की फायरिंग रुकेगी, और गलत लौटने से डिफ़ॉल्ट हैंडलर चल सकता है।


9
आप कुछ भी चलाने से पहले window.onerror को अधिमानतः असाइन करना चाहेंगे। तो जहाँ भी आप इसे डालना चाहते हैं, बस यह सुनिश्चित करें कि यह आपके किसी अन्य js कोड / फाइलों से पहले चलता हो।
माइक लुईस

17
नोट, मोज़िला सलाह देता है: 'ध्यान दें कि कुछ / कई त्रुटि घटनाएं विंडो को चालू नहीं करती हैं। फेरर, आपको विशेष रूप से सुनना पड़ता है।'
एडम नायलर

88
हाँ, मैं प्यार करता हूँ कि यह कैसे कुछ / कई , बहुत वर्णनात्मक कहता है - धन्यवाद मोज़िला।
डैनियल मेंडल


1
यदि वह कोड जो window.onerror को हैंडल करता है, स्वयं एक त्रुटि फेंकता है तो क्या होता है। क्या अनंत लूप की संभावना है?
मार्टिन ब्राउन

15

यदि आपकी वेबसाइट Google Analytics का उपयोग कर रही है, तो आप वह कर सकते हैं जो मैं करता हूं:

window.onerror = function(message, source, lineno, colno, error) {
  if (error) message = error.stack;
  ga('send', 'event', 'window.onerror', message, navigator.userAgent);
}

उपरोक्त कोड पर कुछ टिप्पणियां:

  • आधुनिक ब्राउज़रों के लिए, पूर्ण स्टैक ट्रेस लॉग किया गया है।
  • पुराने ब्राउज़र के लिए जो स्टैक ट्रेस को कैप्चर नहीं करते हैं, इसके बजाय त्रुटि संदेश लॉग होता है। (मेरे अनुभव में सबसे पहले आईओएस संस्करण)।
  • उपयोगकर्ता का ब्राउज़र संस्करण भी लॉग किया गया है, इसलिए आप देख सकते हैं कि कौन से ओएस / ब्राउज़र संस्करण कौन सी त्रुटियों को फेंक रहे हैं। यह बग प्राथमिकता और परीक्षण को सरल करता है।
  • यदि आप, "analytics.js" के साथ Google Analytics का उपयोग इस कोड काम करता है इस तरह । आप "gtag.js" का उपयोग कर रहे हैं, तो बजाय, इस तरह , आप समारोह की अंतिम पंक्ति में बदलाव की जरूरत है। विवरण के लिए यहां देखें

कोड लागू होने के बाद, यह है कि आप अपने उपयोगकर्ताओं की जावास्क्रिप्ट त्रुटियों को कैसे देखते हैं:

  1. Google Analytics में, Behaviorअनुभाग और फिर Top Eventsरिपोर्ट पर क्लिक करें ।
  2. आपको इवेंट श्रेणियों की एक सूची मिलेगी। window.onerrorसूची में क्लिक करें
  3. आपको जावास्क्रिप्ट स्टैक के निशान और त्रुटि संदेशों की एक सूची दिखाई देगी। Secondary dimensionबटन पर क्लिक करके और Event Labelप्रकट होने वाले टेक्स्टबॉक्स में प्रवेश करके अपने उपयोगकर्ताओं के ओएस / ब्राउज़र संस्करणों के लिए रिपोर्ट में एक कॉलम जोड़ें ।
  4. रिपोर्ट नीचे स्क्रीनशॉट की तरह दिखाई देगी।
  5. अधिक मानव-पठनीय विवरणों के लिए OS / ब्राउज़र स्ट्रिंग्स का अनुवाद करने के लिए, मैं उन्हें https://developers.whatismybrowser.com/useragents/parse/ पर कॉपी-पेस्ट करता हूं

यहां छवि विवरण दर्ज करें


3
यह सभी त्रुटियों को नहीं फंसाता है, बस कोशिश करने वाले ब्लॉक को पकड़ना है, हालांकि यह समझाने के लिए एक अच्छी बात है और मुझे नहीं लगता कि आप डाउनवोट के लायक हैं।
निक स्टील

धन्यवाद, निक! मैंने युद्ध-परीक्षण वाले कोड के साथ अपने उत्तर को अपडेट किया, जो मेरी वेबसाइट पर अच्छा काम करता है और जो सभी त्रुटियों को पकड़ता है, न कि केवल उन लोगों के साथ जो आपको फंसाते हैं ... पकड़।
मार्टिन ओमेंडर

2

तीसरे पक्ष की सेवाओं का उपयोग करने के बजाय अपने लिए प्रयास न करें।

त्रुटि हैंडलर नीचे के परिदृश्यों को पकड़ सकते हैं,

  1. बिना टाइप किए गए टाइपर को पकड़ा नहीं जा सकता
  2. बिना संदर्भ रेफ़र पर कब्जा नहीं किया जा सकता है जैसे: var.click ()
  3. टाइपराइटर पर कब्जा किया जा सकता है
  4. सिंटैक्स त्रुटि को पकड़ा जा सकता है
  5. ReferenceError को कैप्चर किया जा सकता है

जावास्क्रिप्ट त्रुटियों को पकड़ने के लिए:

window.addEventListener('error', function (e) {
  //It Will handle JS errors 
})

AngularJS त्रुटियों को पकड़ने के लिए:

app.config(function ($provide) {
$provide.decorator('$exceptionHandler', function ($delegate) {
   return function (exception, cause) {
       //It will handle AngualarJS errors
      }
   })
})

0

इसके अलावा, http://jslogger.com सेवा इसमें मदद कर सकती है:

क्लाउड में जावास्क्रिप्ट त्रुटियों और घटनाओं को लॉग करें

से http://jslogger.com/features :

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

अस्वीकरण: सेवा / कंपनी से संबद्ध नहीं है।


1
503 सेवा अनुपलब्ध
रक्स

0

आप Atatus की कोशिश कर सकते हैं - यह आधुनिक वेब ऐप्स के लिए रियल यूजर मॉनिटरिंग (RUM) के साथ एक नई जावास्क्रिप्ट त्रुटि ट्रैकिंग सेवा है।

हम केवल त्रुटियों को पकड़ते नहीं हैं, बल्कि उन उपयोगकर्ता घटनाओं को भी रोकते हैं जो त्रुटि को ट्रिगर करते हैं। यह आपको अपने अंत में त्रुटि को पुन: पेश करने के लिए कदम देता है।

त्रुटि कैप्चरिंग के साथ, हम पृष्ठ लोड समय को भी कैप्चर करते हैं और इसे अलग-अलग दृष्टिकोणों से दर्शाते हैं - जियो, ब्राउज़र, पेज ड्रिल डाउन, पेज हिस्टोग्राम, अजाक्स मॉनिटरिंग और ट्रांजैक्शन मॉनिटरिंग।

https://www.atatus.com/

डॉक्स उपलब्ध: https://www.atatus.com/docs

अस्वीकरण: मैं अतातुस में एक वेब डेवलपर हूं।


1
मैंने Ataus को एकीकृत किया, और मैंने foo.bar = '' जैसी कुछ कोशिश की, जो अपवाद का कारण बनी। लेकिन मैं अतातुस डैशबोर्ड में कुछ भी नहीं देख सकता।
vmachacek

क्या आप कृपया हमें एक ईमेल छोड़ सकते हैं?
फेजर खान

5
बेशर्म प्लग। विज्ञापन दाहिने हाथ की ओर सीमित होना चाहिए।
विल

0

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


-2

आप इस नई सेवा, http://rescuejs.com/ की जांच कर सकते हैं । https://bugsnag.com/

सर्वर साइड कोड को लिखे बिना आप अपनी सभी जावास्क्रिप्ट त्रुटियों को लॉग इन करते हैं। यह ब्राउजर वर्जन आदि को भी ट्रैक करता है।

मुझे यकीन नहीं है कि मैं उन्हें 100% "उद्यम तैयार" पर विचार करूंगा, लेकिन यह निश्चित रूप से जांचने लायक है।


8
इसे बंद कर दिया गया है। यदि आप अब साइन अप करने का प्रयास करते हैं, तो आपको संदेश मिलता है "आपकी रुचि के लिए धन्यवाद, दुर्भाग्य से बचाव। जेएस अब सक्रिय रूप से चालू नहीं है।"
दिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.