Wie debugge ich eine Node.js-Serveranwendung?
Im Moment verwende ich hauptsächlich das Alarm-Debugging mit Druckanweisungen wie diesen:
sys.puts(sys.inspect(someVariable));
Es muss einen besseren Weg zum Debuggen geben. Ich weiß, dass Google Chrome einen Befehlszeilen-Debugger hat. Ist dieser Debugger auch für Node.js verfügbar?
javascript
node.js
debugging
google-chrome-devtools
Fabian Jakobs
quelle
quelle
--inspect-brk
INSTEAD OF ausführen müssen,--inspect
wenn Sie den tatsächlichen Servercode beim Laden debuggen möchten. Siehe stackoverflow.com/questions/59596138Antworten:
Node-Inspector könnte den Tag retten! Verwenden Sie es in jedem Browser, der WebSocket unterstützt . Haltepunkte, Profiler, Live-Codierung usw. Es ist wirklich großartig.
Installieren Sie es mit:
Dann renne:
quelle
Debuggen
Profilerstellung
node --prof ./app.js
node --prof-process ./the-generated-log-file
Heapdumps
Flammengraphen
Rückverfolgung
Protokollierung
Bibliotheken, die Debugging-Informationen ausgeben
Bibliotheken, die die Stapelverfolgungsinformationen verbessern
Benchmarking
ab -n 100000 -c 1 http://127.0.0.1:9778/
Andere
Erbe
Diese funktionieren, sind jedoch nicht mehr gewartet oder für moderne Knotenversionen nicht mehr anwendbar.
quelle
look
Modul, wie in stackoverflow.com/questions/12864221/nodejs-memory- beschrieben. Profilingnprof
+v8.log
vonnode --prof
.Der im Rahmen der Google Chrome Developer Tools veröffentlichte V8- Debugger kann zum Debuggen von Node.js-Skripten verwendet werden. Eine detaillierte Erklärung, wie das funktioniert , kann in dem gefunden werden Node.js GitHub Wiki .
quelle
https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27#.fitvuaumt
Node verfügt ab Version 6.3 über einen eigenen integrierten GUI-Debugger (mit den DevTools von Chrome).
Übergeben Sie einfach die Inspektorflagge und Sie erhalten eine URL zum Inspektor:
Sie können auch in der ersten Zeile brechen, indem Sie
--inspect-brk
stattdessen übergeben.quelle
Node.js Version 0.3.4+ bietet integrierte Debugging-Unterstützung.
node debug script.js
Handbuch: http://nodejs.org/api/debugger.html
quelle
--debug
umdebug
ohne die Bindestriche. So habe ich es endlich zum Laufen gebracht. Es ist verwirrend, das zu tun--debug
unddebug
zwei verschiedene Dinge zu tun.app is already running...
", wenn ich versuche fortzufahren und auf eine Anweisung stoße, die versucht, Eingaben zu erhalten, wird ich an der Debug-Eingabeaufforderung zurückgesetzt, anstatt die erforderliche Eingabe eingeben zu lassen.Visual Studio Code wird meine Wahl für das Debuggen sein. Kein Aufwand für die Installation von Werkzeugen oder anderen
npm install
Dingen. Legen Sie einfach den Startpunkt Ihrer App in package.json fest und VSCode erstellt automatisch eine Konfigurationsdatei in Ihrer Lösung. Es basiert aufElectron, auf dem Editoren wie Atom basieren.quelle
Ich persönlich verwende JetBrains WebStorm, da es die einzige JavaScript-IDE ist, die ich gefunden habe und die sowohl für Frontend- als auch für Backend-JavaScript geeignet ist.
Es funktioniert auf mehreren Betriebssystemen und verfügt über ein integriertes Debugging von Node.j (sowie eine Menge anderer Dinge) ( http://www.jetbrains.com/webstorm/features/index.html ).
Meine einzigen "Probleme" / Wunschliste Artikel
sindwaren :Es scheint auf Mac mehr Ressourcen zu hungern als unter WindowsIn Version 6 scheint dies kein Problem mehr zu sein.Es wäre schön, wenn es Snippet-Unterstützung hätte (wie die von Sublime Text 2 - dh geben Sie 'fun' ein und tippen Sie auf 'tab', um eine Funktion einzufügen.Siehe @ WickyNilliams Kommentar unten - Mit Live-Vorlagen haben Sie auch Snippet-Unterstützung.quelle
Viele gute Antworten hier, aber ich möchte meine Ansicht hinzufügen (basierend auf der Entwicklung meines Ansatzes).
Debug-Protokolle
Seien wir ehrlich , wir alle lieben ein gutes
console.log('Uh oh, if you reached here, you better run.')
und manchmal funktioniert das großartig. Wenn Sie sich also zurückhalten, sich zu weit davon zu entfernen, fügen Sie Ihren Protokollen mit Visionmedias Debug zumindest etwas Bling hinzu .Interaktives Debuggen
So praktisch die Konsolenprotokollierung auch sein mag, um professionell zu debuggen, müssen Sie die Ärmel hochkrempeln und stecken bleiben. Setzen Sie Haltepunkte, gehen Sie Ihren Code durch, überprüfen Sie Bereiche und Variablen, um festzustellen, was dieses seltsame Verhalten verursacht. Wie andere bereits erwähnt haben, sind Node-Inspector wirklich die Bienenknie. Es bietet alles, was Sie mit dem integrierten Debugger tun können, verwendet jedoch die bekannte Chrome DevTools-Oberfläche. Wenn Sie wie ich Webstorm verwenden , finden Sie hier eine praktische Anleitung zum Debuggen von dort aus.
Stapelspuren
Standardmäßig können wir eine Reihe von Operationen nicht über verschiedene Zyklen der Ereignisschleife (Ticks) verfolgen. Um dies zu umgehen, schauen Sie sich Longjohn an (aber nicht in Produktion!).
Speicherlecks
Mit Node.js können wir einen Serverprozess haben, von dem erwartet wird, dass er längere Zeit aktiv bleibt. Was machst du, wenn du denkst, dass es einige böse Lecks gegeben hat? Verwenden Sie Heapdump und Chrome DevTools, um einige Schnappschüsse zu vergleichen und zu sehen, was sich ändert.
Einige nützliche Artikel finden Sie unter
Wenn Sie sich ein Video ansehen möchten, dann
Egal für welchen Pfad Sie sich entscheiden, stellen Sie sicher, dass Sie verstehen, wie Sie debuggen
quelle
Theseus ist ein Projekt von Adobe Research, mit dem Sie Ihren Node.js-Code in den Klammern des Open Source-Editors debuggen können . Es verfügt über einige interessante Funktionen wie Echtzeit-Codeabdeckung, rückwirkende Überprüfung und asynchronen Aufrufbaum.
quelle
Node.js Tools für Visual Studio 2012 oder 2013 enthält einen Debugger. In der Übersicht wird angegeben , dass "Node.js Tools für Visual Studio das Debuggen von Knoten-Apps vollständig unterstützt." Ich bin neu in Node.js, habe aber einen Hintergrund in .NET und habe festgestellt, dass dieses Add-In eine großartige Möglichkeit ist, Node.js-Anwendungen zu debuggen.
quelle
Visual Studio Code bietet eine wirklich gute Debugging-Unterstützung für Node.js. Es ist kostenlos, Open Source und plattformübergreifend und läuft unter Linux, OS X und Windows.
Sie können sogar Grunz- und Schluckaufgaben debuggen , falls Sie ...
quelle
Ich habe einen anderen Ansatz zum Debuggen von Node.js Code geschrieben, der stabil und extrem einfach ist. Es ist unter https://github.com/sa/iron-node verfügbar .
Ein plattformübergreifender Open Source-Debugger.
Installation:
npm install iron-node -g;
Debuggen:
iron-node yourscript.js;
quelle
Wenn Sie die Atom-IDE verwenden , können Sie das
node-debugger
Paket installieren .quelle
Verwenden von Chrome Version 67.0.3396.62 (+)
Es wird ein weiteres DevTools-Fenster geben, das speziell zum Debuggen der Knoten-App angezeigt wird.
quelle
Ich habe ein hübsches kleines Tool namens pry.js erstellt , das Ihnen helfen kann.
Fügen Sie eine einfache Anweisung irgendwo in Ihren Code ein, führen Sie Ihr Skript normal aus, und der Knoten stoppt den aktuellen Thread, sodass Sie auf alle Ihre Variablen und Funktionen zugreifen können. Anzeigen / Bearbeiten / Löschen nach Belieben!
quelle
In Node.js gibt es einen integrierten Befehlszeilen- Debugger-Client. Cloud 9 IDE haben auch einen ziemlich schönen (visuellen) Debugger .
quelle
Visual Studio Code funktioniert beim Debuggen für uns.
quelle
Ich habe einen kurzen Node.js-Debugging-Primer für die Verwendung des Node-Inspector für diejenigen zusammengestellt, die sich nicht sicher sind, wo sie anfangen sollen.
quelle
Verwenden Sie Webstorm! Es ist perfekt zum Debuggen von Node.js-Anwendungen. Es hat einen eingebauten Debugger. Schauen Sie sich die Dokumente hier an: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
quelle
Starten Sie Ihren Knotenprozess mit dem Flag --inspect .
node --inspect index.js
und dann
chrome://inspect
in Chrom öffnen . Klicken Sie auf den Link "Dedicated DevTools for Node öffnen" oder installieren Sie diese Chrome-Erweiterung, um Chrome DevTools einfach zu öffnen.Weitere Informationen finden Sie unter diesem Link
quelle
Wenn Sie eine leistungsstarke Protokollierungsbibliothek für Node.js benötigen, ist Tracer https://github.com/baryon/tracer die bessere Wahl.
Es gibt Protokollnachrichten mit einem Zeitstempel, einem Dateinamen, einem Methodennamen, einer Zeilennummer, einem Pfad oder einem Aufrufstapel aus, unterstützt die Farbkonsole und unterstützt den einfachen Transport von Datenbanken, Dateien und Streams. Ich bin der Autor.
quelle
Angenommen, Sie haben Node-Inspector auf Ihrem Computer installiert (wenn nicht, geben Sie einfach 'npm install -g Node-Inspector' ein), müssen Sie nur Folgendes ausführen:
Fügen Sie den URI über die Befehlszeile in einen WebKit-Browser (Chrome / Safari) ein.
quelle
Nur der Vollständigkeit halber:
Das PyCharm 3.0 + Node.js Plugin bietet eine großartige Entwicklung + Run + Debug-Erfahrung .
quelle
IntelliJ funktioniert wunderbar für Node.js.
Darüber hinaus unterstützt IntelliJ die Code-Unterstützung gut.
quelle
Es gibt viele Möglichkeiten ...
Die Debug-Unterstützung wird häufig mit dem implementiert v8-Debugging-Protokolls oder des neueren Chrome-Debugging-Protokolls .
quelle
Es gibt das neue Open-Source- Nodeclipse- Projekt (als Eclipse-Plugin oder Enide Studio ):
Nodeclipse wurde 2013 die Nummer 1 in den Eclipse Top 10 NEUEN Plugins . Es wird ein modifizierter V8 verwendet Debugger verwendet (von Google Chrome Developer Tools für Java).
Nodeclipse ist eine kostenlose Open-Source-Software, die zu Beginn eines jeden Monats veröffentlicht wird .
quelle
Die NetBeans- IDE wird seit Version 8.1 von Node.j unterstützt :
Zusätzliche Referenzen:
quelle
Verwenden Sie diese Befehle
quelle
ndb ist eine verbesserte Debugging-Erfahrung für Node.js, die von Chrome DevTools aktiviert wird
https://github.com/GoogleChromeLabs/ndb
quelle
Eine schnelle und schmutzige Möglichkeit, kleine Node.js-Skripte mit Ihrem bevorzugten Browser-Debugger zu debuggen , ist die Verwendung von browserify . Beachten Sie, dass dieser Ansatz nicht mit Anwendungen funktioniert, für die native E / A-Bibliotheken erforderlich sind. Er ist jedoch für die meisten kleinen Skripts ausreichend.
Verschieben Sie nun alle Ihre
var x = requires('x')
Anrufe in einerequires.js
Datei und führen Sie Folgendes aus:(Der Nachteil hier ist, dass Sie das
requires
in all Ihren Dateien entweder verschieben oder kommentieren müssen .)Fügen Sie das
bundle.js
wie folgt in eine HTML-Datei ein:Laden Sie nun die Datei in Ihren Browser und drücken Sie F12und Viola: Debuggen im Browser.
quelle