2014-04-28 13 views
66

Ich versuche, meine nodejs app mit node-Inspector zu debuggen. Google Chrome zeigt den Code jedoch nicht an.debuggen von node.js mit node-inspector

ich folgendes bin mit,

Node.js: v0.10.26

Express: 4.0.0

Knoten Inspector: v0.7.3

Google Chrome Version: 34.0 .1847.131

Dies ist, was ich mache, um den Debugger zu starten.

$ node-inspector 
Node Inspector v0.7.3 
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging. 

In einer anderen Konsole

$ node --debug app.js 
debugger listening on port 5858 
$ 

begann dann Google Chrome und ging Knoten-Inspektor

http://127.0.0.1:8080/debug?port=5858 

Es eröffnet aber ohne irgendwelche code..all Fenster leer sind.

Bemerkt, dass ich nicht ‚Express-Server auf Port 3000‘ bekommen

versucht, alle per node-inspector fails to connect to node aber kein Glück

konnte nicht herausfinden, was mir fehlt. Wäre toll von dir irgendwelche Vorschläge..so kann ich meine Node.js Apps in Google Chrome debuggen.

+3

1. Versuchen Sie, node-Inspector mit der Option --no-preload auszuführen. –

+1

2. Überprüfen Sie die DevTools-Konsole von Chrome - gibt es Fehler? –

Antwort

121

Versuchen Sie, node --debug-brk app.js anstelle von nur --debug auszuführen. Ihre Anwendung pausiert möglicherweise nicht, bevor sich der Knoteninspektor in den Knotenprozess einklinkt. Wenn Sie --debug-brk verwenden, wird der Knoten gezwungen, in der ersten Zeile Ihrer App zu brechen und darauf zu warten, dass ein Debugger den Prozess anfügt. Durch das Laden der node-inspector-Webschnittstelle wird node-inspector an Ihren Knotenprozess angehängt. Aus diesem Grund fügen Sie den Debug-Port des Knotens in die Abfragezeichenfolge ein (localhost: 8080/debug? port = 5858). Sie sagen dem Knoten-Inspector, welchen Port er erreichen und an welchen er sich anschließen soll.

Hier ist ein animiertes Gif, das ich zusammen mit einer vollständigen Installation und Ausführung von node-Inspector erstellt habe.

Im gif verwende ich die --debug Fahne, weil ich keinen Code Debuggen bin, die direkt beim Start ausgeführt wird. Ich debugge in einem Anforderungshandler, der nur ausgelöst wird, wenn die Seite angefordert wird. Wenn Sie also die Seite aktualisieren, wird der Knoten-Inspector in dieser Zeile unterbrochen.

Ich habe vor einiger Zeit auch ein 15-minütiges Youtube-Tutorial zusammengestellt.

http://youtu.be/03qGA-GJXjI

Ich hoffe, das hilft!

+1

Danke Alex, ich habe dein Youtube Video vorher überprüft..sehr informativ Vielen Dank. --debug-brk hat den Trick für mich gemacht..wie auch immer..wenn ich einen Breakpoint in eine meiner Routen gesetzt habe. In meinem Fall experimentiere ich mit Cheerio + Anfrage, eine Website zu kratzen. Ich habe eine Route erstellt, sagen wir scrape.js Ich hoffe, diese Datei zu debuggen..aber es nicht den Haltepunkt zu schlagen..am fehlt mir etwas? – genwip

+0

Ich bin mir nicht sicher. Ohne ein Codebeispiel ist es schwer zu wissen. Können Sie den gesamten Code einfügen, der bis zu dem Punkt ausgeführt wird, an dem diese Route in einem [gist] (http://gist.github.com) deklariert wird, zusammen mit der URL, zu der Sie navigieren, um den Anforderungshandler auszulösen? – Chev

+1

@AlexFord: Wie hast du es geschafft, dieses gif zu erstellen? Ich denke, es ist wirklich cool und kann sehr hilfreich sein – SharpCoder

0

enter image description here

Auf der linken Seite von Knoten Inspektor „Quellen“ Registerkarte dort „mit einem Dreieck in ihm eine Schachtel“ ist - Hervorhebung sagt „Show Navigator“. (Siehe im Bild oben). Öffnen Sie das, um die Dateien zu finden, die Sie debuggen möchten, und legen Sie einen Unterbrechungspunkt für Code fest, der noch ausgeführt werden muss. Wenn Sie Code debuggen möchten, der auf dem Startknoten ausgeführt wird, müssen Sie beim Starten die Option --debug-brk verwenden. Dann müssen Sie im Knoten-Inspektor die App starten (F8, um alle auszuführen). Sie benötigen diese Option, wenn Sie den gesamten Initialisierungscode debuggen möchten, z. B. den Start eines Webbrowsers.

+0

Danke Clay, --debug-brk scheint gearbeitet zu haben..das hat anfangs nicht funktioniert..aber nachdem ich es einige Male versucht habe..es hat es getan ... – genwip

22

Standardmäßig versucht node-inspector, den gesamten Code vorzuladen, bevor das Debug-Fenster gestartet wird. Ich hatte Instanzen, Knoten-Inspektor hängt wegen dieses Pre-Loading für immer auf. Glücklicherweise haben die neueren Versionen die Möglichkeit, die Vorlast zu stoppen, wodurch der Inspector schneller geladen wird.

Versuchen node-inspector --no-preload

+0

Ich wünschte, ich könnte Ihnen mehr Upvotes geben ^^ – destan

+0

Sehr hilfreich! Ich hatte auch dieses dumme Problem, wenn ich lieber sofort Breakpoints setzen wollte. Danke für den Tipp! – Chev

+0

Das hat mein Problem gelöst! –

6

Standard-Fernfehlersuche vollständig in 6.5 Knoten unterbrochen ist. Es ersetzt jedoch durch einen neuen internen Knoten Merkmal

$ node --inspect --debug-brk build/server/server.js 
Debugger listening on port 9229. 
Warning: This is an experimental feature and could change at any time. 
To start debugging, open the following URL in Chrome: 
    chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node 
Debugger attached. 

Siehe hier - http://arveknudsen.com/?p=346%3Fpage_id%3D346&print=pdf - für weitere Informationen

+1

Du hast gerade meinen Tag gerettet! Keine Notwendigkeit mehr für den Knoten-Inspektor. –

+0

hmm, in meinem Fall gibt es mir eine URL beginnend mit "ws: //" ... die Maschine ist ein kopfloser Server, also habe ich die host: port Option übergeben, aber ich kann immer noch nicht die "ws:// "URL in meiner lokalen Instanz von Chrome – Michael

0

node-debug --no-preload app.js

Das, was für mich funktioniert. Nach this:

Mein Skript läuft zu schnell, um den Debugger anzuhängen.

Der debuggte Prozess muss mit --debug-brk gestartet werden, auf diese Weise wird das Skript in der ersten Zeile angehalten.

Hinweis: node-debug fügt diese Option standardmäßig für Sie hinzu.

Verwandte Themen