it-swarm.com.de

Wie debugge ich Node.js-Anwendungen?

Wie debugge ich eine Node.js-Serveranwendung?

Im Moment verwende ich hauptsächlich alert debugging mit folgenden Print-Anweisungen:

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?

1458
Fabian Jakobs

Der V8 debugger, der als Teil der Google Chrome Developer Tools veröffentlicht wurde, kann zum Debuggen von Node.js-Skripts verwendet werden. Eine ausführliche Erklärung, wie dies funktioniert, finden Sie im Node.js GitHub-Wiki .

230
Fabian Jakobs

Knoteninspektor könnte den Tag retten! Verwenden Sie es von jedem Browser aus, der WebSocket unterstützt. Haltepunkte, Profiler, Livecoding usw. Es ist wirklich großartig.

Installieren Sie es mit:

npm install -g node-inspector

Dann renne:

node-debug app.js
1218
daralthus

Debugging

Profilierung

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

Heap-Dumps

Flamegraphen

Ablaufverfolgung

Protokollierung

Bibliotheken, die Debugging-Informationen ausgeben

Bibliotheken, die Stack-Trace-Informationen verbessern

Benchmarking

Andere

Erbe

Diese Funktionen funktionieren, werden aber nicht mehr beibehalten oder sind für moderne Knotenversionen nicht mehr anwendbar.

696
balupton

Knoten hat einen eigenen eingebauten GUI-Debugger ab Version 6.3 (unter Verwendung der DevTools von Chrome).

Nodes builtin GUI debugger

Übergeben Sie einfach die Inspektorflagge und Sie erhalten eine URL zum Inspektor:

node --inspect server.js

Sie können auch die erste Zeile durchbrechen, indem Sie stattdessen --inspect-brk übergeben.

Um ein Chrome-Fenster automatisch zu öffnen, verwenden Sie das Modul inspect-process .

# install inspect-process globally
npm install -g inspect-process

# start the debugger with inspect
inspect script.js
164
Alister Norris

Node.js Version 0.3.4+ verfügt über eine integrierte Debugging-Unterstützung.

node debug script.js

Handbuch: http://nodejs.org/api/debugger.html

86
JulianW

Visual Studio Code ist meine Wahl für das Debuggen. Die Installation von Tools oder npm install-Elementen ist mit einem Aufwand verbunden. Stellen Sie einfach den Startpunkt Ihrer App in package.json ein, und VSCode erstellt automatisch eine Konfigurationsdatei in Ihrer Lösung. Es baut auf Electron auf, auf dem Editoren wie Atom aufgebaut sind.

VS Code bietet eine ähnliche Debugging-Erfahrung wie Sie hatte in anderen IDEs wie VS, Eclipse usw.

 enter image description here  enter image description here

59
Shreyas

Ich persönlich benutze JetBrains WebStorm , da es das einzige von mir gefundene JavaScript IDE ist, das sowohl für Frontend- als auch für Backend-JavaScript geeignet ist.

Es funktioniert auf mehreren Betriebssystemen und enthält Node.js-Debugging (sowie eine Menge anderer Dinge) ( http://www.jetbrains.com/webstorm/features/index.html ).

Meine einzigen "Ausgaben"/Wunschliste-Elemente sind wurden:

  1. Es scheint auf dem Mac ressourcenhungriger zu sein als Windows In Version 6 scheint es kein Problem mehr zu sein.
  2. Es wäre schön, wenn es Snippet-Unterstützung hätte (wie die von Sublime Text 2 - d. H. 'Fun' und tippen Sie auf 'tab', um eine Funktion einzufügen. Siehe @WickyNilliams-Kommentar unten - Mit Live-Vorlagen haben Sie auch Unterstützung für Snippets.
53
isNaN1247

Theseus ist ein Projekt von Adobe research, mit dem Sie Ihren Node.js-Code in ihrem Open Source-Editor debuggen können. Klammern . Es verfügt über einige interessante Funktionen wie Echtzeit-Codeabdeckung, nachträgliche Prüfung, asynchroner Aufrufbaum.

screenshot

37
Sindre Sorhus

Viele großartige Antworten, aber ich möchte meine Ansicht hinzufügen (basierend auf der Entwicklung meines Ansatzes)

Debug-Protokolle

Seien wir ehrlich, wir alle lieben eine gute console.log('Uh oh, if you reached here, you better run.'), und das funktioniert manchmal großartig. Wenn Sie also zu weit davon entfernt sind, zu weit davon entfernt zu sein, fügen Sie Ihren Protokollen mit Visionmedias Debug ein wenig Glanz hinzu. 

Interaktives Debugging

So praktisch die Konsolenprotokollierung auch sein kann: Um professionell zu debuggen, müssen Sie die Ärmel hochkrempeln und feststecken. Setzen Sie Haltepunkte, gehen Sie den Code durch, prüfen Sie Bereiche und Variablen, um herauszufinden, 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, aber mit der bekannten Chrome DevTools-Benutzeroberfläche. Wenn Sie wie ich Webstorm verwenden, ist hier eine praktische Anleitung zum Debuggen Dort.

Spuren stapeln

Standardmäßig können wir keine Reihe von Operationen über verschiedene Zyklen der Ereignisschleife (Ticks) verfolgen. Um dies zu umgehen, schau nach longjohn (aber nicht in Produktion!).

Speicherlecks

Mit Node.js wird erwartet, dass ein Serverprozess längere Zeit in Betrieb bleibt. Was tun Sie, wenn Sie der Meinung sind, dass einige unangenehme Lecks entstanden sind? Verwenden Sie heapdump und Chrome DevTools, um einige Schnappschüsse zu vergleichen und zu sehen, was sich ändert.


Einige nützliche Artikel finden Sie hier

Wenn Sie Lust haben, ein Video anzusehen, dann

Welchen Pfad Sie auch wählen, stellen Sie sicher, dass Sie wissen, wie Sie debuggen

 enter image description here

Es ist eine schmerzhafte Sache
Deine eigenen Schwierigkeiten betrachten und wissen
Dass du selbst und niemand sonst es geschafft hat 

Sophokles, Ajax

34
Philip O'Brien

Node.js Tools für Visual Studio 2012 oder 2013 enthält einen Debugger. Die Übersicht here states "Node.js Tools für Visual Studio enthält vollständige Unterstützung für das Debuggen von Knoten-Apps.". Da Node.js neu ist, aber einen Hintergrund in .NET hat, habe ich festgestellt, dass dieses Add-In eine großartige Möglichkeit zum Debuggen von Node.js-Anwendungen ist. 

22
John81

Visual Studio Code hat wirklich Nice Node.js Debugging-Unterstützung. Es ist kostenlos, Open Source und plattformübergreifend und läuft unter Linux, OS X und Windows.

Sie können sogar Debuggen Grunzen und Schlucken von Aufgaben , falls Sie ...

20
hans

Ich habe einen anderen Ansatz zum Debuggen von Node.js-Code geschrieben, der stabil und extrem einfach ist. Es ist verfügbar unter https://github.com/s-a/iron-node .

Enter image description here

Ein plattformübergreifender Open Source-Debugger.

Installation:

npm install iron-node -g;

Debuggen:

iron-node yourscript.js;

19
Stephan Ahlf

Wenn Sie Atom IDE verwenden, können Sie das node-debugger-Paket installieren.

13
Uchiha Itachi

Ich habe ein kleines Werkzeug namens pry.js erstellt, das Ihnen helfen kann.

Fügen Sie eine einfache Anweisung in Ihren Code ein, führen Sie Ihr Skript normal aus und Knoten hält den aktuellen Thread an, sodass Sie auf alle Variablen und Funktionen zugreifen können. Anzeigen/Bearbeiten/Löschen 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()
10
BlaineSch

Chrome Version 67.0.3396.62 (+) verwenden

  1. Knoten-App ausführen 

knoten --inspect-brk = 0.0.0.0: 9229 server.js (Server-Js-Dateiname)

  1. Durchsuchen Sie Ihre App in Chrom, z. "localhost: port"
  2. Öffnen DevTools.
  3. Klicken Sie auf das Knotensymbol neben dem Symbol für das reagierende Gerät.

 enter image description here

Es wird ein weiteres DevTools-Fenster geben, das speziell zum Debuggen der Knoten-App erscheint.

 enter image description here

10
babidi

Visual Studio Code wird für uns beim Debuggen funktionieren.

9

In Node.js gibt es eine integrierte Befehlszeile debugger client . Cloud 9 IDE hat auch ziemlich Nice (visuell) debugger .

9
yojimbo87

Ich habe einen kurzen Node.js-Debugging-Primer on mit dem node-inspector für diejenigen zusammengestellt, die nicht wissen, wo sie anfangen sollen.

8
Josh Habdas

Starten Sie Ihren Knotenprozess mit der Markierung --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 die this chrome-Erweiterung zum einfachen Öffnen von DevTools aus Chrom.

Weitere Informationen finden Sie unter this link

6
Rahul Kumar

Wenn Sie eine leistungsfähige Protokollierungsbibliothek für Node.js benötigen, ist Tracer https://github.com/baryon/tracer die bessere Wahl.

Es gibt Protokollnachrichten mit einem Zeitstempel, Dateinamen, Methodennamen, Zeilennummer, Pfad oder Aufrufstapel, Unterstützung für Farbkonsolen und Unterstützung für Datenbank-, Datei- und Streamtransport einfach aus. Ich bin der Autor.

6
Baryon Lee

Verwenden Sie Webstorm! Es ist perfekt für das Debuggen von Node.js-Anwendungen. Es hat einen eingebauten Debugger. Hier finden Sie die Dokumente: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html

6
OneMoreQuestion

Vorausgesetzt, 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:

node-inspector & node --debug-brk scriptFileName.js

Fügen Sie den URI über die Befehlszeile in einen WebKit-Browser (Chrome/Safari) ein.

6
Shaheen Ghiassy
6
Alex

Es gibt das neue Open-Source Nodeclipse -Projekt (als Eclipse-Plugin oder Enide Studio ):

http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png

Nodeclipse wurde # 1 in Eclipse Top 10 NEW Plugins für 2013 . Es verwendet einen modifizierten V8 Debugger (von Google Chrome Developer Tools für Java).

Nodeclipse ist freie Open-Source-Software zu Beginn jeden Monats veröffentlicht .

5
Paul Verest

Die NetBeans IDE unterstützt seit Version 8.1 Node.js:

<...>

Neue Feature-Highlights

Node.js Anwendungsentwicklung

  • Neuer Projektassistent für Node.js
  • Neuer Node.js Express-Assistent
  • Erweiterter JavaScript-Editor
  • Neue Unterstützung für das Ausführen von Node.js-Anwendungen
  • Neue Unterstützung für das Debuggen von Node.js-Anwendungen.

<...>

Zusätzliche referenzen:

  1. NetBeans Wiki/NewAndNoteworthyNB81 .
  2. Node.js Express-App in der NetBeans-IDE von Geertjan-Oracle .
4
Sergey Brunov

Es gibt viele Möglichkeiten ...

Die Debug-Unterstützung wird häufig mit dem v8 Debugging Protocol oder dem neueren Chrome Debugging Protocol implementiert.

4
cmd

IntelliJ funktioniert wunderbar für Node.js.

Darüber hinaus unterstützt IntelliJ 'Code Assistance' gut.

Eine schnelle und schmutzige Möglichkeit, kleine Node.js-Skripte mit Ihrem bevorzugten Browser-Debugger zu debuggen, wäre browserify. Beachten Sie, dass dieser Ansatz nicht mit Anwendungen funktioniert, für die native E/A-Bibliotheken erforderlich sind, aber für die meisten kleinen Skripts ausreichend ist.

$ npm install -g browserify

Verschieben Sie nun alle Ihre var x = requires('x')-Aufrufe in eine requires.js-Datei und führen Sie Folgendes aus:

$ browserify requires.js -s window -o bundle.js

(Der Nachteil hier ist, dass Sie entweder den requiresin all Ihren Dateien verschieben oder kommentieren müssen.)

Fügen Sie den bundle.js wie folgt in eine HTML-Datei ein:

<script type="text/javascript" src="bundle.js"></script>

Laden Sie nun die Datei in Ihren Browser und drücken Sie F12 und Viola: Debuggen im Browser.

3
node-debug -p 8888 scriptFileName.js
2
matt burns

ndb ist ein verbessertes Debugging für Node.js, das von Chrome DevTools aktiviert wird

https://github.com/GoogleChromeLabs/ndb

2
Mukesh

Verwenden Sie diese Befehle

DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
2
Zahirul Haque

Sie können pure Node.js verwenden und die Anwendung in der Konsole debuggen, wenn Sie möchten.

Zum Beispiel erstellen wir eine Dummy-debug.js-Datei, die wir debuggen und Haltepunkte darin einfügen möchten (debugger-Anweisung):

let a = 5;
debugger;

a *= 2;
debugger;

let b = 10;
debugger;

let c = a + b;
debugger;

console.log(c);

Dann können Sie diese Datei mit dem Befehl inspect zum Debuggen ausführen:

node inspect debug.js

Dadurch wird der Debugger in der Konsole gestartet, und Sie sehen die Ausgabe, die der folgenden ähnelt:

< Debugger listening on ws://127.0.0.1:9229/6da25f21-63a0-480d-b128-83a792b516fc
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
  2 debugger;
  3

Möglicherweise stellen Sie hier fest, dass die Ausführung der Datei in der ersten Zeile angehalten wurde. Ab diesem Moment können Sie die Datei mit den folgenden Befehlen (Hotkeys) schrittweise durchgehen:

  • cont um fortzufahren,
  • next um zum nächsten Haltepunkt zu gelangen,
  • in zum Einsteigen,
  • out um herauszutreten
  • pause um es anzuhalten

Geben Sie cont mehrmals ein und sehen Sie, wie wir vom Haltepunkt zum Haltepunkt gelangen:

debug> next
break in misc/debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
  2 debugger;
  3
debug> next
break in misc/debug.js:2
  1 (function (exports, require, module, __filename, __dirname) { let a = 5;
> 2 debugger;
  3
  4 a *= 2;
debug> next
break in misc/debug.js:4
  2 debugger;
  3
> 4 a *= 2;
  5 debugger;
  6

Wir können jetzt die Variablenwerte an diesem Punkt prüfen, indem Sie den Befehl repl schreiben. Dadurch können Sie den Variablennamen schreiben und dessen Wert anzeigen:

debug> repl
Press Ctrl + C to leave debug repl
> a
5
> b
undefined
> c
undefined
>

Sie können sehen, dass wir a = 5 zu diesem Zeitpunkt haben und b und c nicht definiert sind.

Für ein komplexeres Debugging möchten Sie möglicherweise einige externe Tools (IDE, Browser) verwenden. Sie können mehr hier lesen. 

1

Meine ursprüngliche Resonanz war vor einigen Jahren das Pre Visual Studio.

Daher ist die Verwendung von GOOD von hapi ein großartiges Protokollierungspaket, aber zum Debuggen verwenden Sie visual studio .

ursprüngliche Antwort (vor einiger Zeit): Ich würde GOOD von Walmart Labs verwenden. Es wird die Arbeit machen und es ist sehr flexibel:

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');
    }
});
1
Doron Segal

Es gibt verschiedene Möglichkeiten, die Anwendung Node.JS wie folgt zu debuggen:

1) Installieren Sie devtool und starten Sie die Anwendung damit

npm install devtool -g --save
devtool server.js

dies wird im Chrome-Entwicklermodus geöffnet, sodass Sie einen Debugger-Punkt setzen und testen können.

2) Debuggen mit Node-Inspector 

node-inspector

3) debuggen mit --debug

node --debug app.js 
0
Mr. Raj Kale