javascript मैं Node.js अनुप्रयोगों को डीबग कैसे करूं?




debugging google-chrome-devtools (24)

मैं एक नोड.जेएस सर्वर अनुप्रयोग कैसे डीबग करूं?

अभी मैं ज्यादातर प्रिंट स्टेटमेंट्स के साथ अलर्ट डिबगिंग का उपयोग कर रहा हूं:

sys.puts(sys.inspect(someVariable));

डीबग करने के लिए एक बेहतर तरीका होना चाहिए। मुझे पता है कि Google क्रोम में कमांड लाइन डीबगर है। क्या यह डीबगर नोड.जेएस के लिए भी उपलब्ध है?



IntelliJ आश्चर्यजनक रूप से Node.js. के लिए काम करता है

इसके अलावा, IntelliJ अच्छी तरह से 'कोड सहायता' का समर्थन करता है।


Node.js. के भीतर अंतर्निहित कमांड लाइन डीबगर क्लाइंट है क्लाउड 9 आईडीई में भी बहुत अच्छा (दृश्य) Debugger



यदि आपको Node.js के लिए शक्तिशाली लॉगिंग लाइब्रेरी की आवश्यकता है, तो Tracer बेहतर विकल्प है।

यह एक टाइमस्टैम्प, फ़ाइल नाम, विधि का नाम, लाइन नंबर, पथ या कॉल स्टैक, समर्थन रंग कंसोल, और समर्थन डेटाबेस, फ़ाइल, स्ट्रीम परिवहन के साथ लॉग संदेशों को आउटपुट करता है। मैं लेखक हूँ।


विजुअल स्टूडियो कोड वास्तव में Node.js डीबगिंग समर्थन अच्छा है। यह मुफ़्त, ओपन सोर्स और क्रॉस-प्लेटफॉर्म है और लिनक्स, ओएस एक्स और विंडोज पर चलता है।

आप grunt और gulp कार्यों को भी डीबग कर सकते हैं , आपको इसकी आवश्यकता होनी चाहिए ...


node-debug -p 8888 scriptFileName.js

डिबगिंग

प्रोफाइलिंग

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

Heapdumps

Flamegraphs

ट्रेसिंग

लॉगिंग

लाइब्रेरीज़ जो आउटपुट डीबगिंग जानकारी आउटपुट करते हैं

पुस्तकालय जो स्टैक ट्रेस जानकारी को बढ़ाते हैं

बेंचमार्किंग

अन्य

विरासत

ये काम करने के लिए उपयोग करते हैं लेकिन अब आधुनिक नोड संस्करणों पर लागू नहीं होते हैं या अब लागू नहीं होते हैं।



NetBeans आईडीई में संस्करण 8.1 के बाद से नोड.जेएस समर्थन है:

<...>

नई फ़ीचर हाइलाइट्स

नोड.जेएस अनुप्रयोग विकास

  • नया नोड.जेएस परियोजना विज़ार्ड
  • नया नोड.जेएस एक्सप्रेस विज़ार्ड
  • उन्नत जावास्क्रिप्ट संपादक
  • Node.js अनुप्रयोगों को चलाने के लिए नया समर्थन
  • Node.js अनुप्रयोगों को डीबग करने के लिए नया समर्थन।

<...>

अतिरिक्त संदर्भ:

  1. NetBeans विकी / NewAndNoteworthyNB81
  2. NetBeans आईडीई, Geertjan-Oracle में Node.js एक्सप्रेस ऐप


यहां बहुत सारे महान उत्तर हैं, लेकिन मैं अपना विचार जोड़ना चाहता हूं (इस पर आधारित कि मेरा दृष्टिकोण कैसे विकसित हुआ)

दोषमार्जन लॉग

आइए इसका सामना करते हैं, हम सभी को एक अच्छा console.log('Uh oh, if you reached here, you better run.') और कभी-कभी यह बहुत अच्छा काम करता है, इसलिए यदि आप कम से कम इसे दूर करने के लिए कम से कम स्थानांतरित करने के लिए अव्यवस्थित हैं कुछ विजनमेडिया के डीबग के साथ आपके लॉग पर ब्लिंग

इंटरएक्टिव डीबगिंग

जैसा कि कंसोल लॉगिंग के रूप में आसान हो सकता है, व्यावसायिक रूप से डीबग करने के लिए आपको अपनी आस्तीन को रोल करने और फंसने की आवश्यकता है। ब्रेकपॉइंट्स सेट करें, अपने कोड के माध्यम से कदम उठाएं, स्कॉप्स और चर का निरीक्षण करें ताकि यह देखने के लिए कि अजीब व्यवहार क्या हो रहा है। जैसा कि अन्य ने उल्लेख किया है, node-inspector वास्तव में मधुमक्खी घुटनों है। यह अंतर्निहित डीबगर के साथ आप जो कुछ भी कर सकते हैं, लेकिन उस परिचित क्रोम DevTools इंटरफ़ेस का उपयोग कर करता है। यदि, मेरे जैसे, आप वेबस्टॉर्म का उपयोग करते हैं , तो here से डीबग करने के लिए एक आसान मार्गदर्शिका है।

स्टैक निशान

डिफ़ॉल्ट रूप से, हम घटना लूप (टिक) के विभिन्न चक्रों में संचालन की एक श्रृंखला का पता नहीं लगा सकते हैं। इसके चारों ओर पाने के लिए longjohn पर एक नज़र डालें (लेकिन उत्पादन में नहीं!)।

स्म्रति से रिसाव

Node.js के साथ हम एक सर्वर प्रक्रिया काफी समय के लिए रहने की उम्मीद कर सकते हैं। यदि आपको लगता है कि यह कुछ बुरा रिसाव उग आया है तो आप क्या करते हैं? कुछ स्नैपशॉट की तुलना करने के लिए heapdump और क्रोम heapdump उपयोग करें और देखें कि क्या बदल रहा है।

कुछ उपयोगी लेखों के लिए, देखें

यदि आप तब वीडियो देखना पसंद करते हैं

आप जो भी रास्ता चुनते हैं, बस सुनिश्चित करें कि आप समझते हैं कि आप डिबगिंग कैसे कर रहे हैं

यह एक दर्दनाक बात है
अपनी खुद की परेशानी को देखने और जानने के लिए
यह आप स्वयं और किसी और ने इसे नहीं बनाया है

सोफोकल्स, अजाक्स


- ध्वज ध्वज के साथ अपनी नोड प्रक्रिया शुरू करें।

node --inspect index.js

और फिर chrome://inspect ओपन chrome://inspect । "नोड के लिए समर्पित समर्पित DevTools" लिंक पर क्लिक करें या आसानी से क्रोम DevTools खोलने के लिए this क्रोम एक्सटेंशन को स्थापित this

अधिक जानकारी के लिए this लिंक का संदर्भ लें


नोड का संस्करण संस्करण 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

Node.js संस्करण 0.3.4+ में डिबगिंग समर्थन अंतर्निहित है।

node debug script.js

मैनुअल: http://nodejs.org/api/debugger.html


मैंने 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()

Brackets एडोब रिसर्च द्वारा एक प्रोजेक्ट है जो आपको अपने ओडे सोर्स एडिटर Brackets में अपने नोड.जेएस कोड को डीबग करने देता है। इसमें रीयल-टाइम कोड कवरेज, रेट्रोएक्टिव इंस्पेक्शन, एसिंक्रोनस कॉल पेड़ जैसी कुछ रोचक विशेषताएं हैं।


इस आदेश का प्रयोग करें

DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect

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

यह कई ओएस पर काम करता है और इसमें नोड.जेएस डिबगिंग अंतर्निहित है (साथ ही साथ अन्य सामानों का एक टन] ( http://www.jetbrains.com/webstorm/features/index.html )।

मेरे केवल 'मुद्दे' / इच्छा सूची आइटम कर रहे हैं थे :

  1. ऐसा लगता है कि विंडोज़ की तुलना में मैक पर भूख लगी है अब संस्करण 6 में कोई समस्या नहीं है।
  2. यह अच्छा होगा अगर इसमें स्निपेट समर्थन था (जैसे सब्लिमे टेक्स्ट 2 - यानी 'मजेदार' टाइप करें और फ़ंक्शन में डालने के लिए 'टैब' टैप करें। नीचे @WickyNilliams टिप्पणी देखें - लाइव टेम्पलेट्स के साथ आपके पास स्निपेट समर्थन भी है।

अपने पसंदीदा ब्राउज़र डीबगर के साथ छोटी नोड.जेएस स्क्रिप्ट को डीबग करने का एक त्वरित और गंदा तरीका ब्राउज़र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 और व्हायोला दबाएं: ब्राउज़र में डीबग करें।


node-inspector दिन बचा सकता है! WebSocket समर्थन करने वाले किसी भी ब्राउज़र से इसका इस्तेमाल करें। ब्रेकपॉइंट्स, प्रोफाइलर, लाइवकोडिंग, आदि ... यह वास्तव में कमाल है।

इसके साथ स्थापित करें:

npm install -g node-inspector

तो भागो:

node-debug app.js

डिबगिंग के लिए विजुअल स्टूडियो कोड मेरी पसंद होगी। किसी भी उपकरण या npm install सामान npm install करने का कोई ओवरहेड नहीं। बस पैकेज में अपने ऐप का शुरुआती बिंदु सेट करें। जेसन और वीएससीओडी स्वचालित रूप से आपके समाधान के अंदर एक कॉन्फ़िगरेशन फ़ाइल बनायेगा। यह Electron पर निर्माण है, जिस पर एटम जैसे संपादक बनाए जाते हैं।

वीएस कोड इसी तरह के डिबगिंग अनुभव देता है जैसा कि आपने वीएस, ग्रहण इत्यादि जैसे अन्य आईडीई में किया होगा।


मैंने Node.js कोड को डीबग करने के लिए एक अलग दृष्टिकोण लिखा जो स्थिर है और यह बेहद सरल है। यह https://github.com/s-a/iron-node पर उपलब्ध है।

एक ओपनसोर्स क्रॉस-प्लेटफार्म दृश्य डीबगर।

स्थापना:

npm install iron-node -g;

डीबग:

iron-node yourscript.js;


यदि आप एटम आईडीई का उपयोग कर रहे हैं, तो आप node-debugger पैकेज स्थापित कर सकते हैं।





google-chrome-devtools