मैं कोणीय जावास्क्रिप्ट का उपयोग करके अवधारणा के प्रमाण पर काम कर रहा हूं।
विभिन्न ब्राउज़रों (फ़ायरफ़ॉक्स और क्रोम) में कोणीय जावास्क्रिप्ट कोड को कैसे डीबग करें?
मैं कोणीय जावास्क्रिप्ट का उपयोग करके अवधारणा के प्रमाण पर काम कर रहा हूं।
विभिन्न ब्राउज़रों (फ़ायरफ़ॉक्स और क्रोम) में कोणीय जावास्क्रिप्ट कोड को कैसे डीबग करें?
जवाबों:
1. क्रोम
क्रोम में डीबग AngularJS के लिए आप AngularJS Batarang का उपयोग कर सकते हैं । (प्लगइन पर हाल की समीक्षाओं से ऐसा लगता है कि AngularJS Batarang अब बनाए नहीं रखा जा रहा है। क्रोम के विभिन्न संस्करणों में परीक्षण किया गया काम नहीं करता है)
यहाँ वर्णन और डेमो के लिए लिंक है:
यहां से क्रोम प्लगइन डाउनलोड करें: डीबग AngularJS के लिए क्रोम प्लगइन
आप इस लिंक को भी देख सकते हैं: एनजी-बुक: डीबगिंग एंगुलरजेएस
आप कोणीय डिबगिंग के लिए एनजी-निरीक्षण का भी उपयोग कर सकते हैं।
2. फ़ायरफ़ॉक्स
के लिए फ़ायरफ़ॉक्स की मदद से Firebug आप कोड डीबग कर सकते हैं।
इस फ़ायरफ़ॉक्स ऐड-ऑन का उपयोग करें: AngScope: फ़ायरफ़ॉक्स के लिए ऐड-ऑन (AngularJS टीम द्वारा आधिकारिक एक्सटेंशन नहीं)
3. डिबगिंग एंगुलरजेएस : लिंक की जांच करें: डीबगिंग एंगुलरजेएस
ng-inspect
अगर Batarang आप सिर दर्द दे रहा है।
IMHO, सबसे निराशाजनक अनुभव एक दृश्य तत्व से संबंधित एक विशिष्ट दायरे के मूल्य को प्राप्त करने / स्थापित करने से आता है। मैंने न केवल अपने कोड में, बल्कि कोणीय.जेएस में भी बहुत सारे ब्रेकप्वाइंट किए, लेकिन कभी-कभी यह सबसे प्रभावी तरीका नहीं है। हालांकि नीचे दिए गए तरीके बहुत शक्तिशाली हैं, लेकिन निश्चित रूप से उन्हें बुरा अभ्यास माना जाता है यदि आप वास्तव में उत्पादन कोड में उपयोग करते हैं, तो उन्हें बुद्धिमानी से उपयोग करें!
कई गैर-IE ब्राउज़रों में, आप एक तत्व को राइट क्लिक करके और "इंस्पेक्ट एलिमेंट" पर क्लिक करके एक तत्व का चयन कर सकते हैं। वैकल्पिक रूप से आप Chrome में तत्वों टैब में किसी भी तत्व पर क्लिक कर सकते हैं, उदाहरण के लिए। नवीनतम चयनित तत्व $0
कंसोल में चर में संग्रहीत किया जाएगा ।
इस बात पर निर्भर करता है कि क्या कोई ऐसा निर्देश मौजूद है जो एक अलग दायरा बनाता है, आप गुंजाइश को angular.element($0).scope()
फिर से प्राप्त कर सकते हैं या angular.element($0).isolateScope()
( $($0).scope()
यदि $ सक्षम है तो उपयोग करें )। यह वही है जो आपको तब मिलता है जब आप बटरंग के नवीनतम संस्करण का उपयोग कर रहे हैं। यदि आप सीधे मूल्य बदल रहे हैं, तो scope.$digest()
यूआई पर परिवर्तनों को प्रतिबिंबित करने के लिए उपयोग करना याद रखें ।
जरूरी नहीं कि डिबगिंग के लिए। scope.$eval(expression)
बहुत आसान है, जब आप जल्दी से जांचना चाहते हैं कि किसी अभिव्यक्ति का अपेक्षित मूल्य है या नहीं।
पूर्व scope.bla
और बीच का अंतर scope.$eval('bla')
प्रोटोटाइपिक रूप से विरासत में दिए गए मूल्यों पर विचार नहीं करता है। पूरी तस्वीर पाने के लिए नीचे दिए गए स्निपेट का उपयोग करें (आप सीधे मूल्य नहीं बदल सकते हैं, लेकिन आप $eval
वैसे भी उपयोग कर सकते हैं !)
scopeCopy = function (scope) {
var a = {};
for (x in scope){
if (scope.hasOwnProperty(x) &&
x.substring(0,1) !== '$' &&
x !== 'this') {
a[x] = angular.copy(scope[x])
}
}
return a
};
scopeEval = function (scope) {
if (scope.$parent === null) {
return hoho(scope)
} else {
return angular.extend({}, haha(scope.$parent), hoho(scope))
}
};
इसके साथ प्रयोग करें scopeEval($($0).scope())
।
कभी-कभी ngModel
जब आप निर्देश लिख रहे होते हैं तो आप मूल्यों की निगरानी करना चाहते हैं। का प्रयोग करें $($0).controller('ngModel')
और आप की जाँच करने के मिल जाएगा $formatters
, $parsers
, $modelValue
, $viewValue
$render
और सब कुछ।
वहाँ भी $ लॉग है कि आप उपयोग कर सकते हैं! यह आपके कंसोल का उपयोग इस तरह से करता है कि आप इसे काम करना चाहते हैं!
त्रुटि / चेतावनी / जानकारी दिखाने से आपका कंसोल आपको सामान्य रूप से दिखाता है!
इस का उपयोग करें> दस्तावेज़
प्रश्न का उत्तर दिए जाने के बावजूद, यह गैर-निरीक्षक पर एक नज़र रखना दिलचस्प हो सकता है
एनजी-इंस्पेक्टर की कोशिश करो। वेबसाइट http://ng-inspector.org/ से फ़ायरफ़ॉक्स के लिए ऐड-ऑन डाउनलोड करें । यह मेनू पर फ़ायरफ़ॉक्स ऐड पर उपलब्ध नहीं है।
http://ng-inspector.org/ - वेबसाइट
http://ng-inspector.org/ng-inspector.xpi - फ़ायरफ़ॉक्स ऐड-ऑन
दुर्भाग्य से अधिकांश ऐड-ऑन और ब्राउज़र एक्सटेंशन आपको केवल मान दिखा रहे हैं, लेकिन वे आपको गुंजाइश चर को संपादित करने या कोणीय कार्यों को चलाने की अनुमति नहीं देते हैं। यदि आप ब्राउज़र कंसोल (सभी ब्राउज़र में) में $ स्कोप वैरिएबल को बदलना चाहते हैं तो आप jquery का उपयोग कर सकते हैं। यदि आप AngularJS से पहले jQuery लोड करते हैं, तो angular.element को jQuery चयनकर्ता पारित किया जा सकता है। तो आप एक नियंत्रक के दायरे का निरीक्षण कर सकते हैं
angular.element('[ng-controller="name of your controller"]').scope()
उदाहरण: आपको $ स्कोप वैरिएबल का मान बदलने और ब्राउज़र में परिणाम देखने की जरूरत है, फिर ब्राउज़र कंसोल में टाइप करें:
angular.element('[ng-controller="mycontroller"]').scope().var1 = "New Value";
angular.element('[ng-controller="mycontroller"]').scope().$apply();
आप अपने ब्राउज़र में परिवर्तन तुरंत देख सकते हैं। जिस कारण से हमने $ लागू का उपयोग किया है () है: बाहरी कोणीय संदर्भ से अपडेट किया गया कोई भी स्कोप वैरिएबल इसे अपडेट नहीं करेगा, यह आपको स्कोप के मानों को अपडेट करने के बाद डाइजेस्ट साइकिल चलाने की आवश्यकता है scope.$apply()
।
$ स्कोप वैरिएबल मान देखने के लिए, आपको बस उस वैरिएबल को कॉल करना होगा।
उदाहरण: आप क्रोम या फ़ायरफ़ॉक्स में वेब कंसोल में $ गुंजाइश का मूल्य देखना चाहते हैं:
angular.element('[ng-controller="mycontroller"]').scope().var1;
परिणाम तुरंत कंसोल में दिखाया जाएगा।
debugger
जहाँ आप इसका उपयोग करने का इरादा रखते हैं, वहां कॉल जोड़ें ।
someFunction(){
debugger;
}
console
अपने ब्राउज़र के वेब डेवलपर टूल के टैब में, जारी करेंangular.reloadWithDebugInfo();
उस पृष्ठ पर जाएँ या पुनः लोड करें जिसे आप डीबग करने का इरादा रखते हैं और अपने ब्राउज़र में डिबगर दिखाई देते हैं।
var rootEle = document.querySelector("html");
var ele = angular.element(rootEle);
गुंजाइश () हम तत्व से (या उसके माता-पिता) तत्व पर गुंजाइश () विधि का उपयोग करके $ गुंजाइश प्राप्त कर सकते हैं:
var scope = ele.scope();
इंजेक्टर ()
var injector = ele.injector();
इस इंजेक्टर के साथ, फिर हम अपने ऐप के अंदर किसी भी कोणीय वस्तु, जैसे कि सेवाओं, अन्य नियंत्रकों, या किसी अन्य ऑब्जेक्ट को इंस्टेंट कर सकते हैं
आप अपने कोड में 'डीबगर' जोड़ सकते हैं और ऐप को फिर से लोड कर सकते हैं, जो वहां ब्रेकपॉइंट डालता है और आप 'स्टेप ओवर', या रन कर सकते हैं।
var service = {
user_id: null,
getCurrentUser: function() {
debugger; // Set the debugger inside
// this function
return service.user_id;
}
आप डेवलपर टूल में निर्मित ब्राउज़रों का उपयोग करके डीबग कर सकते हैं।
ब्राउज़र में डेवलपर टूल खोलें और स्रोत टैब पर जाएं।
वह फ़ाइल खोलें जिसे आप Ctrl + P और खोज फ़ाइल नाम का उपयोग करके डीबग करना चाहते हैं
कोड के बाईं ओर क्लिक कर एक पंक्ति ny पर ब्रेक पॉइंट जोड़ें।
पृष्ठ ताज़ा करें।
डिबगिंग के लिए बहुत सारे प्लगइन उपलब्ध हैं जिन्हें आप क्रोम प्लगइन डीबग कोणीय अनुप्रयोग "क्रोम के लिए डीबगर" का उपयोग करके संदर्भित कर सकते हैं
विजुअल स्टूडियो कोड (विजुअल स्टूडियो नहीं) के लिए Ctrl+ Shift+P
खोज बार में Chrome के लिए डीबगर टाइप करें, इसे इंस्टॉल करें और इसे सक्षम करें।
अपनी launch.json
फ़ाइल में यह कॉन्फ़िगर जोड़ें:
{
"version": "0.1.0",
"configurations": [
{
"name": "Launch localhost with sourcemaps",
"type": "chrome",
"request": "launch",
"url": "http://localhost/mypage.html",
"webRoot": "${workspaceRoot}/app/files",
"sourceMaps": true
},
{
"name": "Launch index.html (without sourcemaps)",
"type": "chrome",
"request": "launch",
"file": "${workspaceRoot}/index.html"
},
]
}
इसे संलग्न करने के लिए आपको Chrome को दूरस्थ डिबगिंग के साथ लॉन्च करना चाहिए ताकि एक्सटेंशन संलग्न हो सके।
Chrome शॉर्टकट पर राइट-क्लिक करें, और गुणों का चयन करें "लक्ष्य" फ़ील्ड में, append --remote-debugging-port = 9222 या कमांड प्रॉम्प्ट में, /chrome.exe --remote-debugging-port = 9222 निष्पादित करें
किसी टर्मिनल में, निष्पादित / आवेदन / Google \ Chrome.app/Contents/MacOS/Google \ Chrome --remote-debugging-port = 9222
एक टर्मिनल में, Google-chrome --remote-debugging-port = 9222 लॉन्च करें
चूंकि ऐड-ऑन अब काम नहीं करते हैं, इसलिए मैंने पाया उपकरण का सबसे सहायक सेट विजुअल स्टूडियो / IE का उपयोग कर रहा है क्योंकि आप अपने JS में ब्रेकप्वाइंट सेट कर सकते हैं और अपने डेटा का निरीक्षण कर सकते हैं। बेशक क्रोम और फ़ायरफ़ॉक्स में सामान्य रूप से बहुत बेहतर देव उपकरण हैं। इसके अलावा, अच्छा ol 'कंसोल.लॉग () सुपर सहायक रहा है!
हो सकता है कि आप कोणीय 2 और इसके बाद के अनुप्रयोगों को डीबग करने के लिए Angular Augury A Google Chrome देव टूल एक्सटेंशन का उपयोग कर सकते हैं ।