javascript - मैं Node.js अनुप्रयोगों को डीबग कैसे करूं?
debugging google-chrome-devtools (20)
नोड का संस्करण संस्करण 6.3 के रूप में जीयूआई डीबगर में बनाया गया है (क्रोम के देवटूल का उपयोग करके)
बस इंस्पेक्टर ध्वज पास करें और आपको इंस्पेक्टर को एक यूआरएल प्रदान किया जाएगा:
node --inspect server.js
आप इसके बजाय --inspect-brk
पास करके पहली पंक्ति को भी तोड़ सकते हैं।
स्वचालित रूप से क्रोम विंडो खोलने के लिए, inspect-process मॉड्यूल inspect-process उपयोग करें।
# install inspect-process globally
npm install -g inspect-process
# start the debugger with inspect
inspect script.js
मैं एक नोड.जेएस सर्वर अनुप्रयोग कैसे डीबग करूं?
अभी मैं ज्यादातर प्रिंट स्टेटमेंट्स के साथ अलर्ट डिबगिंग का उपयोग कर रहा हूं:
sys.puts(sys.inspect(someVariable));
डीबग करने के लिए एक बेहतर तरीका होना चाहिए। मुझे पता है कि Google क्रोम में कमांड लाइन डीबगर है। क्या यह डीबगर नोड.जेएस के लिए भी उपलब्ध है?
डिबगिंग
प्रोफाइलिंग
-
node --prof ./app.js
-
node --prof-process ./the-generated-log-file
Heapdumps
Flamegraphs
ट्रेसिंग
लॉगिंग
लाइब्रेरीज़ जो आउटपुट डीबगिंग जानकारी आउटपुट करते हैं
पुस्तकालय जो स्टैक ट्रेस जानकारी को बढ़ाते हैं
बेंचमार्किंग
- अपाचे बेंच :
ab -n 100000 -c 1 http://127.0.0.1:9778/
- wrk
अन्य
विरासत
ये काम करने के लिए उपयोग करते हैं लेकिन अब आधुनिक नोड संस्करणों पर लागू नहीं होते हैं या अब लागू नहीं होते हैं।
- https://github.com/bnoordhuis/node-profiler - अंतर्निहित डिबगिंग द्वारा प्रतिस्थापित किया गया
- https://github.com/c4milo/node-webkit-agent - नोड निरीक्षक द्वारा प्रतिस्थापित किया गया
- https://nodetime.com/ - निष्क्रिय
Google क्रोम डेवलपर टूल्स के हिस्से के रूप में जारी किए गए V8 डीबगर का उपयोग नोड.जेएस स्क्रिप्ट को डीबग करने के लिए किया जा सकता है। Node.js GitHub विकी में यह काम कैसे मिल सकता है इसका एक विस्तृत विवरण।
ndb , एक कमांड लाइन डीबगर भी है जो नोड.जेएस में लिखा गया है।
Node.js संस्करण 0.3.4+ में डिबगिंग समर्थन अंतर्निहित है।
node debug script.js
अपने पसंदीदा ब्राउज़र डीबगर के साथ छोटी नोड.जेएस स्क्रिप्ट को डीबग करने का एक त्वरित और गंदा तरीका ब्राउज़रify का उपयोग करना होगा। ध्यान दें कि यह दृष्टिकोण किसी भी अनुप्रयोग के साथ काम नहीं करता है जिसके लिए मूल I / O पुस्तकालयों की आवश्यकता होती है, लेकिन यह सबसे छोटी स्क्रिप्ट के लिए पर्याप्त है।
$ npm install -g browserify
अब अपने सभी var x = requires('x')
requires.js
फ़ाइल में कॉल करें और चलाएं:
$ browserify requires.js -s window -o bundle.js
(यहां नकारात्मकता यह है कि आपको या तो अपनी सभी फाइलों में requires
या टिप्पणी करना होगा।)
एक HTML फ़ाइल में bundle.js
को शामिल करें जैसे:
<script type="text/javascript" src="bundle.js"></script>
अब अपने ब्राउज़र में फ़ाइल लोड करें और एफ 12 और व्हायोला दबाएं: ब्राउज़र में डीबग करें।
इस आदेश का प्रयोग करें
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
डिबगिंग के लिए विजुअल स्टूडियो कोड मेरी पसंद होगी। किसी भी उपकरण या npm install
सामान npm install
करने का कोई ओवरहेड नहीं। बस पैकेज में अपने ऐप का शुरुआती बिंदु सेट करें। जेसन और वीएससीओडी स्वचालित रूप से आपके समाधान के अंदर एक कॉन्फ़िगरेशन फ़ाइल बनायेगा। यह Electron पर निर्माण है, जिस पर एटम जैसे संपादक बनाए जाते हैं।
वीएस कोड इसी तरह के डिबगिंग अनुभव देता है जैसा कि आपने वीएस, ग्रहण इत्यादि जैसे अन्य आईडीई में किया होगा।
नया ओपन-सोर्स nodeclipse.org प्रोजेक्ट है (एक ग्रहण प्लगइन या एनइड स्टूडियो के रूप में ):
http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png
2013 के लिए एक्लिप्स शीर्ष 10 नए प्लगइन्स में नोडक्लिप्स # 1 बन गया। यह एक संशोधित V8 डीबगर का उपयोग करता है (जावा के लिए Google क्रोम डेवलपर टूल्स से)।
नोडक्लिप्स हर महीने की शुरुआत में जारी मुक्त ओपन-सोर्स सॉफ्टवेयर है।
मान लें कि आपके कंप्यूटर पर नोड-इंस्पेक्टर स्थापित है (यदि नहीं, तो बस 'npm install -g node-inspector' टाइप करें) आपको बस चलाने के लिए है:
node-inspector & node --debug-brk scriptFileName.js
और यूआरआई को कमांड लाइन से वेबकिट (क्रोम / सफारी) ब्राउज़र में पेस्ट करें।
मैं वॉलमार्ट लैब्स द्वारा GOOD इस्तेमाल करता हूं। यह काम करेगा, और यह बहुत लचीला है:
var hapi = require('hapi');
var good = require('good');
var server = hapi.createServer('localhost', 5000,{});
server.route({SOME ROUTE HERE});
server.start();
var options = {
subscribers: {
'console': ['ops', 'request', 'log', 'error'],
'http://localhost/logs': ['log']
}
};
server.pack.require('good', options, function (err) {
if (!err) {
console.log('Plugin loaded successfully');
}
});
मैंने pry.js नामक एक साफ छोटा सा टूल बनाया जो आपकी मदद कर सकता है।
अपने कोड में कहीं भी एक सरल कथन दें, अपनी स्क्रिप्ट को सामान्य रूप से चलाएं और नोड वर्तमान थ्रेड को रोक देगा जो आपको अपने सभी चर और कार्यों तक पहुंच प्रदान करेगा। इच्छानुसार उन्हें देखें / संपादित / हटाएं!
pry = require('pryjs')
class FizzBuzz
run: ->
for i in [1..100]
output = ''
eval(pry.it) # magic
output += "Fizz" if i % 3 is 0
output += "Buzz" if i % 5 is 0
console.log output || i
bar: ->
10
fizz = new FizzBuzz()
fizz.run()
मैंने Node.js कोड को डीबग करने के लिए एक अलग दृष्टिकोण लिखा जो स्थिर है और यह बेहद सरल है। यह https://github.com/s-a/iron-node पर उपलब्ध है।
एक ओपनसोर्स क्रॉस-प्लेटफार्म दृश्य डीबगर।
स्थापना:
npm install iron-node -g;
डीबग:
iron-node yourscript.js;
यदि आप एटम आईडीई का उपयोग कर रहे हैं, तो आप node-debugger
पैकेज स्थापित कर सकते हैं।
यदि आपको Node.js के लिए शक्तिशाली लॉगिंग लाइब्रेरी की आवश्यकता है, तो Tracer बेहतर विकल्प है।
यह एक टाइमस्टैम्प, फ़ाइल नाम, विधि का नाम, लाइन नंबर, पथ या कॉल स्टैक, समर्थन रंग कंसोल, और समर्थन डेटाबेस, फ़ाइल, स्ट्रीम परिवहन के साथ लॉग संदेशों को आउटपुट करता है। मैं लेखक हूँ।
वेबस्टॉर्म का प्रयोग करें! यह Node.js अनुप्रयोगों को डीबग करने के लिए एकदम सही है। इसमें एक अंतर्निहित डीबगर है। यहां दस्तावेज़ https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html : https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
NetBeans आईडीई में संस्करण 8.1 के बाद से नोड.जेएस समर्थन है:
<...>
नई फ़ीचर हाइलाइट्स
नोड.जेएस अनुप्रयोग विकास
- नया नोड.जेएस परियोजना विज़ार्ड
- नया नोड.जेएस एक्सप्रेस विज़ार्ड
- उन्नत जावास्क्रिप्ट संपादक
- Node.js अनुप्रयोगों को चलाने के लिए नया समर्थन
- Node.js अनुप्रयोगों को डीबग करने के लिए नया समर्थन।
<...>
अतिरिक्त संदर्भ:
विजुअल स्टूडियो कोड डीबगिंग में हमारे लिए काम करेगा।
विजुअल स्टूडियो कोड वास्तव में Node.js डीबगिंग समर्थन अच्छा है। यह मुफ़्त, ओपन सोर्स और क्रॉस-प्लेटफॉर्म है और लिनक्स, ओएस एक्स और विंडोज पर चलता है।
आप grunt और gulp कार्यों को भी डीबग कर सकते हैं , आपको इसकी आवश्यकता होनी चाहिए ...
विजुअल स्टूडियो 2012 या 2013 के लिए नोड.जेएस टूल्स में एक डीबगर शामिल है। यहां पर अवलोकन में कहा गया है कि "विजुअल स्टूडियो के लिए नोड.जेएस टूल्स में नोड ऐप्स को डीबग करने के लिए पूर्ण समर्थन शामिल है।" Node.js के लिए नया होने के नाते, लेकिन .NET में पृष्ठभूमि होने के कारण, मुझे यह पता चला है कि यह Node.js अनुप्रयोगों को डीबग करने का एक शानदार तरीका है।
IntelliJ आश्चर्यजनक रूप से Node.js. के लिए काम करता है
इसके अलावा, IntelliJ अच्छी तरह से 'कोड सहायता' का समर्थन करता है।