javascript nodejs - Wie debugge ich Node.js-Anwendungen?



debugger express (25)

In Node.js ist ein Befehlszeilen- Debugger-Client integriert. Cloud 9 IDE hat auch einen hübschen (visuellen) Debugger .

Wie debugge ich eine Node.js-Serveranwendung?

Im Moment benutze ich meistens das Debugging mit print-Anweisungen wie folgt:

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

Es muss eine bessere Möglichkeit zum Debuggen geben. Ich weiß, dass Google Chrome einen Befehlszeilen-Debugger hat. Ist dieser Debugger auch für Node.js verfügbar?


Debuggen

Profilerstellung

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

Heapdumps

Flammengraphen

Ablaufverfolgung

Protokollierung

Bibliotheken, die Debuginformationen ausgeben

Bibliotheken, die Stack-Trace-Informationen verbessern

Benchmarking

Andere

Erbe

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


Brackets ist ein Projekt von Adobe Research, mit dem Sie Ihren Node.js Code in ihren Open Source Editor Brackets debuggen können. Es hat einige interessante Funktionen wie Echtzeit-Code-Abdeckung, rückwirkende Inspektion, asynchrone Aufruf-Struktur.



Node.js Tools für Visual Studio 2012 oder 2013 enthält einen Debugger. Die Übersicht here "Node.js Tools für Visual Studio enthält vollständige Unterstützung für das Debuggen von Knoten-Apps." Ich bin neu in Node.js, verfüge jedoch über einen Hintergrund in .NET und habe festgestellt, dass dieses Add-In eine gute Möglichkeit ist, Node.js-Anwendungen zu debuggen.




Angenommen, Sie haben node-inspector auf Ihrem Computer installiert (falls nicht, geben Sie einfach 'npm install -g node-inspector' ein):

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

Und fügen Sie den URI von der Befehlszeile in einen WebKit (Chrome / Safari) Browser ein.


Ich persönlich benutze JetBrains WebStorm, da es die einzige JavaScript-IDE ist, die ich gefunden habe, die sowohl für Frontend als auch für Backend-JavaScript geeignet ist.

Es funktioniert auf mehreren Betriebssystemen und hat Node.js Debugging eingebaut (sowie eine Menge anderer Sachen) ( http://www.jetbrains.com/webstorm/features/index.html ).

Meine einzigen 'Probleme' / Wunschliste Artikel sind waren :

  1. Es scheint auf Mac Ressourcenhungriger zu sein als Windows In Version 6 scheint das kein Problem mehr zu sein.
  2. Es wäre schön, wenn es Snippet-Unterstützung hätte (wie die von Sublime Text 2 - sprich "Fun" und tippe auf "Tab", um eine Funktion hinzuzufügen. Siehe @WickyNilliams Kommentar unten - Mit Live Templates haben Sie auch Snippet Unterstützung.

Knoten hat seinen eigenen eingebauten GUI-Debugger ab Version 6.3 (mit den DevTools von Chrome)

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

node --inspect server.js

Sie können auch in der ersten Zeile brechen, indem --inspect-brk stattdessen --inspect-brk .

Verwenden Sie das inspect-process Modul, um ein Chrome-Fenster automatisch zu öffnen.

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

# start the debugger with inspect
inspect script.js

Ich würde GOOD von Walmart Labs benutzen. Es wird den Job 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');
    }
});


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

Setzen Sie eine einfache Anweisung irgendwo in Ihren Code, führen Sie Ihr Skript normal aus und der Knoten hält den aktuellen Thread an, der Ihnen Zugriff auf all Ihre Variablen und Funktionen gibt. Anzeigen / 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()

Wenn Sie eine leistungsfähige Protokollbibliothek für Node.js benötigen, ist Tracer eine bessere Wahl.

Es gibt Protokollmeldungen mit Zeitstempel, Dateiname, Methodenname, Zeilennummer, Pfad oder Aufruf-Stack, Support-Farbkonsole aus und unterstützt Datenbank-, Datei- und Stream-Transport problemlos. Ich bin der Autor.


IntelliJ funktioniert wunderbar für Node.js.

Außerdem unterstützt IntelliJ "Code Assistance" gut.



node-debug -p 8888 scriptFileName.js

Verwenden Sie diese Befehle

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

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 .

Ein plattformübergreifender Open-Source-Debugger.

Installation:

npm install iron-node -g;

Debuggen:

iron-node yourscript.js;


Starten Sie Ihren Knotenprozess mit dem Flag --inspect .

node --inspect index.js

und dann öffnen Sie chrome://inspect in Chrom chrome://inspect . Klicken Sie auf den Link "Devote DevTools für Knoten öffnen" oder installieren Sie this Chrome-Erweiterung zum einfachen Öffnen von Chrome DevTools.

Weitere Informationen finden Sie unter this Link


Viele gute Antworten hier, aber ich möchte meine Meinung hinzufügen (basierend auf meiner Entwicklung)

Debug-Protokolle

Let's face it, wir alle lieben eine gute console.log('Uh oh, if you reached here, you better run.') Und manchmal, das funktioniert gut, so wenn Sie zurückhaltend sind, zu weit weg davon zumindest zu entfernen einige Bling zu Ihren Protokollen mit dem Debugging von Visionmedia .

Interaktives Debugging

So praktisch wie die Konsolenprotokollierung sein kann: Um professionell zu debuggen, müssen Sie die Ärmel hochkrempeln und stecken bleiben. Setzen Sie Haltepunkte, gehen Sie durch Ihren Code, untersuchen Sie Bereiche und Variablen, um zu sehen, was dieses komische Verhalten verursacht. Wie andere schon erwähnt haben, ist node-inspector wirklich die Bienen-Knie. Es bietet alles, was Sie mit dem integrierten Debugger tun können, aber mit der vertrauten Chrome DevTools-Oberfläche. Wenn Sie wie ich Webstorm verwenden , finden Sie here eine praktische Anleitung zum Debuggen von dort.

Stapel Spuren

Standardmäßig können wir eine Reihe von Vorgängen über verschiedene Zyklen der Ereignisschleife (Ticks) nicht verfolgen. Um dies zu longjohn schauen Sie sich longjohn (aber nicht in Produktion!).

Speicherlecks

Mit Node.js können wir erwarten, dass ein Serverprozess lange Zeit aufhält. Was machst du, wenn du denkst, dass es zu ekligen Lecks gekommen ist? Verwenden Sie heapdump und Chrome DevTools, um einige Snapshots zu vergleichen und zu sehen, was sich ändert.

Für einige nützliche Artikel, überprüfen Sie

Wenn Sie Lust haben, ein Video (s) zu sehen, dann

Unabhängig davon, welchen Pfad Sie wählen, stellen Sie sicher, dass Sie verstehen, wie Sie debuggen

Es ist eine schmerzhafte Sache
Um deine eigenen Probleme zu sehen und zu wissen
Dass du selbst und niemand sonst es geschafft hast

Sophokles, Ajax




Visual Studio Code unterstützt die Unterstützung von Node.js. Es ist kostenlos, quelloffen und plattformübergreifend und läuft unter Linux, OS X und Windows.

Sie können sogar Grunt- und Schluck-Aufgaben debuggen, sollten Sie ...


Sie können die hidden Auswahl verwenden:

// Matches all elements that are hidden
$('element:hidden')

Und der visible Wähler:

// Matches all elements that are visible
$('element:visible')




javascript node.js debugging google-chrome-devtools