Wie debugge ich Node.js Anwendungen?
-
19-09-2019 - |
Frage
Wie debugge ich ein Node.js server-Anwendung?
Jetzt bin ich meistens mit alert-debugging mit der print-Anweisung wie diese:
sys.puts(sys.inspect(someVariable));
Es muss einen besseren Weg zu Debuggen.Ich weiß, dass Google Chrome hat ein Kommandozeilen-debugger.Ist dieser debugger verfügbar Node.js wie auch?
Lösung 3
Die V8 Debugger als Teil des Google veröffentlicht Chrome Developer tools zu debuggen Node.js Skripte verwendet werden können. Eine detaillierte Erklärung zur Funktionsweise finden Sie in der Knoten gefunden werden Js GitHub Wiki .
Andere Tipps
Knoten-Inspektor könnte den Tag retten! Verwenden Sie es, von jedem Browser unterstützt WebSocket . Haltepunkte, Profiler, livecoding, etc ... Es ist wirklich genial.
Installieren Sie es mit:
npm install -g node-inspector
Dann laufen:
node-debug app.js
Debuggen
Profilieren
-
node --prof ./app.js
-
node --prof-process ./the-generated-log-file
Heapdumps
Flamegraphs
- 0x
- jam3 / DevTool dann Chrome Developer tools Flamme Charts
- Dtrace und StackVis - Nur auf SmartOS unterstützt
- clinicjs
Tracing
Protokollierung
Bibliotheken, dass die Ausgabe Debug-Informationen
Bibliotheken, die Stack-Trace-Informationen verbessern
Benchmarking
- Apache Bench :
ab -n 100000 -c 1 http://127.0.0.1:9778/
- WRK
Andere
Vermächtnis
Diese Anwendung zu arbeiten, aber nicht mehr weiter gepflegt oder nicht mehr für moderne Knoten Versionen.
- https://github.com/bnoordhuis/node-profiler - ersetzt durch integrierte bei der Fehlersuche
- https://github.com/c4milo/node-webkit-agent - durch den Knoten Inspektor ersetzt
- https://nodetime.com/ - gelöschtes
Knoten sein eigener hat in GUI-Debugger ab Version 6.3 gebaut (mit Chrome DevTools )
Sie einfach den Inspektoren Flagge passieren und Sie werden den Prüfer mit einer URL zur Verfügung gestellt werden:
node --inspect server.js
Sie können auch auf der ersten Zeile durchbrechen, indem --inspect-brk
statt vorbei.
Um ein Chrome-Fenster automatisch geöffnet wird, verwenden Sie die inspizieren-Prozess Modul.
# install inspect-process globally
npm install -g inspect-process
# start the debugger with inspect
inspect script.js
Node.js Version 0.3.4+ hat eine integrierte Unterstützung debuggen.
node debug script.js
Handbuch: http://nodejs.org/api/debugger.html
Visual Studio-Code wird meine Wahl für das Debuggen. Kein Aufwand für Werkzeuge oder npm install
Sachen installieren.
Einfach den Ausgangspunkt Ihrer Anwendung in package.json und VSCode wird eine Konfigurationsdatei in Ihrer Lösung automatisch erstellen. Es Build auf Electron , auf die Editoren wie Atome aufgebaut sind.
VS-Code gibt ähnliche Debug-Erfahrung wie Sie haben könnten hatte in anderen IDEs wie VS, Eclipse, etc.
Ich persönlich benutze JetBrains WebStorm , da es die einzige JavaScript IDE ist, dass ich gefunden habe, die beide groß ist für Frontend und Backend JavaScript.
Es funktioniert auf mehreren Betriebssystemen und verfügt über Node.js Debuggen eingebaut (sowie eine Menge anderer Sachen] ( Sublime Text 2 - dh Typ ‚Spaß‘ und tippen Sie 'Reiter' in Funktion setzen Siehe @WickyNilliams Kommentar unten -.. Mit Live-Vorlagen Sie auch Snippet Unterstützung haben
Viele große Antworten hier, aber ich möchte meine Ansicht hinzufügen (basierend auf, wie mein Ansatz entwickelt)
Debug-Protokolle
Seien wir ehrlich, wir alle lieben eine gute console.log('Uh oh, if you reached here, you better run.')
und manchmal die großen Werke, wenn Sie also zurückhaltender zu weit weg zumindest von ihm zu bewegen, einige bling auf Ihre Protokolle mit Visionmedia Debug .
Interaktive Debuggen
Wie praktisch als Konsolenprotokollierung sein kann, zu debuggen professionell müssen Sie Ihre Ärmel hochzukrempeln und stecken in bekommen. Setzen Sie Haltepunkte, Schritt für Schritt durch den Code, überprüfen Bereiche und Variablen, um zu sehen, was das seltsame Verhalten verursacht. Wie andere erwähnt haben, Knoten-Inspektor ist wirklich die Bienen-Knie. Er tut alles, was Sie mit dem integrierten Debugger tun, aber mit diesem vertrauten Chrome DevTools Schnittstelle. Wenn, wie ich, verwenden Sie WebStorm , dann hier ist eine praktische Anleitung von dort zu debuggen.
Stack-Traces
Standardmäßig können wir nicht eine Reihe von Operationen in verschiedenen Zyklen der Ereignisschleife (Ticks) verfolgen. Um dies zu umgehen hat einen Blick auf Longjohn (aber nicht in Produktion!).
Memory Leaks
Mit Node.js wir einen Serverprozess zu erwarten, für längere Zeit zu bleiben. Was tun Sie, wenn Sie denken, dass es einige böse Lecks entstanden ist? Verwenden Sie heapdump und Chrome DevTools ein paar Schnappschüsse zu vergleichen und sehen, was zu verändern.
Für einige nützliche Artikel Besuche
- RisingStack - Debuggen Node.js Anwendungen
- ausgezeichnete Artikel von David Mark Clement von nearForm
Wenn Sie sich wie ein Video ansehen (en) dann
- Netflix JS Talks - Debugging Node.js in Produktion
- Interessantes Video von die Tracing-Arbeitsgruppe auf Tracing und Debugging node.js
- Wirklich informativ 15-Minuten-Video auf Knoten-Inspektoren
Wie auch immer Weg Sie wählen, nur sicher sein, Sie verstehen, wie Sie debuggen
eingebenEs ist eine schmerzhafte Sache
Um Blick auf Ihre eigenen Probleme und wissen
Dass Sie sich selbst und sonst niemand gemacht hat esSophokles, Ajax
Node.js Tools für Visual Studio 2012 oder 2013 einen Debugger enthält. Die Übersicht hier states „Node.js Tools für Visual Studio enthält vollständige Unterstützung Knoten Anwendungen für das Debuggen.“. Die neu in Node.js, aber einen Hintergrund in .NET ist, habe ich dieses Add gefunden eine gute Möglichkeit, zu debuggen Node.js Anwendungen.
Visual Studio-Code wirklich nett Node.js Debugging-Unterstützung hat. Es ist kostenlos, Open Source und Cross-Plattform und läuft auf Linux, OS X und Windows.
Sie können sogar debug Grunzen und schluck Aufgaben , sollten Sie müssen ...
Ich schrieb einen anderen Ansatz zu debuggen Node.js Code, der stabil ist und ist extrem einfach. Es ist erhältlich unter https://github.com/sa/iron-node .
Ein Open-Source-Cross-Plattform-visuelle Debugger.
Installation:
npm install iron-node -g;
Debug:
iron-node yourscript.js;
Wenn Sie mit dem Atom IDE , können Sie das node-debugger
-Paket installieren.
Mit Chrome Version 67.0.3396.62 (+)
- Ausführen Knoten app
Knoten---inspect BRK = 0.0.0.0: 9229 server.js (server js Dateiname)
- Durchsuchen Sie Ihre App in Chrom z.B. "Localhost: port"
- Öffnen DevTools.
- Klicken Sie auf das der Knoten-Symbol neben dem ansprechenden Gerätesymbol.
Es wird ein weiteres DevTools Fenster, das für das Debuggen von Knoten App speziell herausspringen wird.
eingebenIch habe ein nettes kleines Tool namens pry.js , die Ihnen helfen können.
Setzen Sie eine einfache Aussage irgendwo im Code, führen Sie Ihr Skript normalerweise und Knoten den aktuellen Thread zu stoppen geben Sie für alle Ihre Variablen und Funktionen zugreifen. Ansicht / bearbeiten / löschen sie nach Belieben!
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()
Es ist eingebaut in der Kommandozeile Debugger-Client innerhalb Node.js. Cloud 9 IDE haben auch recht nett (visuell) Debugger .
Visual Studio-Code arbeitet für uns bei der Fehlersuche.
Ich habe eine kurze Node.js Debug-Primer auf die Verwendung von < a href = "https://github.com/node-inspector/node-inspector" rel = "nofollow noreferrer"> node-Inspektor für diejenigen, die nicht sicher sind, wo anfangen.
Verwenden WebStorm! Es ist perfekt für das Debuggen von Node.js-Anwendungen. Es hat sich zu einem integrierten Debugger. Schauen Sie sich die Dokumentation hier: https: // www .jetbrains.com / help / WebStorm / 2016,1 / laufen-and-Debugging-node-js.html
Wenn Sie eine leistungsstarke Logging-Bibliothek für Node.js, Tracer https://github.com/baryon/tracer ist eine bessere Wahl.
Es gibt Log-Meldungen mit einem Zeitstempel, Dateinamen, Methodennamen, Zeilennummer, Pfad oder Call-Stack, Unterstützung Farbkonsole und Support-Datenbank, ein Datei-Stream Transport leicht. Ich bin der Autor.
Angenommen, Sie haben node-inspector auf Ihrem computer installiert ist (falls nicht, geben Sie einfach 'npm install-g node-inspector"), die Sie nur ausführen müssen:
node-inspector & node --debug-brk scriptFileName.js
Und fügen Sie den URI von der Befehlszeile in einem WebKit (Chrome / Safari), browser.
Nur der Vollständigkeit halber:
Die PyCharm 3.0 + Node.js Plugin bietet eine wunderbare Entwicklung + run + Debug-Erfahrung .
Starten Sie Ihren Knoten Prozess mit -. Inspect Flag
node --inspect index.js
und dann öffnen chrome://inspect
in Chrom. Klicken Sie auf die „Open dedizierte DevTools für Knoten“ -Link oder installieren this chrome-Erweiterung für leicht Chrom DevTools öffnen.
Weitere Informationen finden Sie unter diesen Link
Es gibt viele Möglichkeiten ...
- Knoten enthält eine Debug-Dienstprogramm
- Knoten-Inspektor
- Code-Editoren / IDEs (Debug-Anweisungen für eine der folgenden sehen)
Debug-Unterstützung oft implementiert, mit dem v8 Debugging-Protokoll oder den neueren < a href = "https://developer.chrome.com/devtools/docs/debugger-protocol" rel = "noreferrer"> Chrome-Debugging-Protokoll .
Es ist die neue Open-Source- Nodeclipse Projekt (als Eclipse-Plugin oder Enide Studio ):
Nodeclipse wurde 1 # in Eclipse-Top 10 neuen Plugins für das Jahr 2013 . Es verwendet eine modifizierte V8 Debugger (von Google Chrome Developer Tools für Java).
ist Nodeclipse freie Open-Source-Software zu Beginn eines jeden Monats freigegeben.
IntelliJ funktioniert wunderbar für Node.js.
Darüber hinaus IntelliJ unterstützt 'Code-Assistance' gut.
Die NetBeans IDE hatte Node.js Unterstützung da Version 8.1 :
<...>
Die Neuerungen im Detail
Node.js Application Development
- Neue Node.js Projekt-Assistent
- Neue Node.js Express Assistenten
- Verbesserte JavaScript-Editor
- Neue Unterstützung für das Ausführen Node.js Anwendungen
- Neue Unterstützung für Node.js Debuggen von Anwendungen.
<...>
Weitere Referenzen:
Verwenden Sie diese Befehle
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
Eine schnelle und unsaubere Art und Weise zu debuggen kleine Node.js Skripte mit Ihrem Lieblings Browser Debugger zu verwenden wäre, browserify . Beachten Sie, dass dieser Ansatz nicht funktioniert mit allen Anwendungen, die nativen I / O-Bibliotheken erfordern, aber es ist gut genug für die meisten kleinen Skripten.
$ npm install -g browserify
Sie nun alle Ihre var x = requires('x')
Anrufe in eine requires.js
Datei und starten Sie bewegen:
$ browserify requires.js -s window -o bundle.js
(Der Nachteil hier ist, dass Sie entweder verschieben oder die requires
in allen Dateien zu kommentieren.)
Fügen Sie den bundle.js
in einer HTML-Datei wie folgt:
<script type="text/javascript" src="bundle.js"></script>
laden Sie nun die Datei in Ihrem Browser und drücken Sie F12 und Viola. Debug-Browser
ndb ist eine verbesserte Debugging-Erfahrung für Node.js, aktiviert durch Chrome DevTools