Hat jemand Node-Inspector mit Grunt zum Debuggen von Anwendungen verwendet? Wenn nicht, können Sie ein Debugging-Tool für Grunt-basierte Apps empfehlen?
Ich arbeite mit nodejs für eine serverseitige App und habe Grunt , um getrennte Aufgaben zu verwenden (dies liegt daran, dass Benutzer Aufgaben separat ausführen können).
node-inspector
,node --debug
das mit einem Browser, der eine Verbindung herstellt, kommuniziert und die Debug-Informationen bereitstellt. Dies ist fantastisch, da Sie Chrome dann mit dem Node-Inspector-Prozess verbinden und alle Webinspektor-Tools zum Debuggen Ihrer App verwenden können. github.com/dannycoates/node-inspectorAntworten:
Um grunt im Debug auszuführen, müssen Sie das grunt-Skript explizit an den Knoten übergeben:
und setzen Sie eine
debugger;
Zeile in Ihre Aufgabe.node-inspector
öffnet dann einen Browser mit Debugging-Tools.Bearbeiten 28 Feb 2014
node-inspector
hat den Befehl hinzugefügtnode-debug
, der den Knoten in einem--debug
Zustand startet und den Browser für dienode-inspector
Seite öffnet. Er stoppt, wenn er die erstedebugger
Zeile erreicht oder einen Haltepunkt setzt.Bearbeiten Sie den 30. Januar 2015
Unter Windows sind die Dinge etwas komplizierter. Anweisungen finden Sie in der Antwort von @ e.gluhotorenko.
quelle
$(which grunt)
ist? Ist es nur die Gruntfile.js, die ich debuggen möchte? Und fürtask
setze ich (serve
als Beispiel)grunt serve
oder nurserve
? Ich habenode-debug Gruntfile.js serve
viele andere Dinge ausprobiert, aber ich kann das einfach nicht zum Laufen bringen. Der Knoteninspektor wird geöffnet und in der ersten Zeile unterbrochen, aber ich kann nicht in dieserve
Aufgabe einbrechen, selbst wenn ich einedebugger;
Zeile als erste Zeile der Funktion eingefügt habe.grunt.js
Skript ersetzt. Das ist das Skript, mit dem Grunt tatsächlich ausgeführt wird. Wenn Sie unter Windows arbeiten, suchen Sie unter stackoverflow.com/a/13443026/240358 (die Antwort darunter) nach einem möglichen Speicherort für das grunt-cli-Skript. Das nimmt den Platzgrunt
in Ihrem Kommando - in Ihrem Beispiel, ersetzen Sietask
mitserve
Windows-Lösung
Lauf
von cmd im Verzeichnis mit Ihrem
Gruntfile.js
. Vergessen Sie nicht, diedebugger;
Linie an den erforderlichen Stellen anzubringen.quelle
grunt-cli
Pakets:node --debug-brk [..]\node_modules\grunt-cli\bin\grunt
node --debug-brk (Resolve-Path ~\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt) taskname
node-inspector
Zum Debuggen müssen wir die Grunzdatei unter bin ändern. Auf meinem Computer ist grunt global installiert, also ging ich zu / usr / local / lib / node_modules / grunt / bin. Ich öffnete die Datei und änderte:
#!/usr/bin/env node
Zu
#!/usr/bin/env node --debug-brk
--debug-brk wird in der ersten Zeile von Javascript ausgeführt.
Dies allein reicht jedoch nicht aus, da Sie Ihre jun-Datei für die Grunzaufgabe in der Dropdown-Liste im Knoteninspektor nicht finden können. Sie müssen daher die Datei, die Sie debuggen möchten, ändern, indem Sie
debugger;
wo hinzufügen Sie möchten, dass der Haltepunkt eintritt. Jetzt können Sie nach der ersten Pause auf Weiter klicken und auf Ihrerdebugger;
Linie brechenZiemlich klobig, aber es ist der einzige Weg, den ich bisher gefunden habe.
quelle
Ich habe kürzlich grunt-node-inspector erstellt, um Node-inspector einfach mit dem Rest Ihres Grunt-Workflows zu konfigurieren. Schauen Sie sich das an: https://github.com/ChrisWren/grunt-node-inspector
Hier ist ein Abschnitt einer Grunt-Datei, der zeigt, wie Sie eine Grunt-Aufgabe mit Grunt-Node-Inspector, Grunt-Concurrent und Grunt-Shell debuggen können: https://github.com/CabinJS/Cabin/blob/master/Gruntfile. js # L44-L77
quelle
node --debug-brk $(which grunt) node-inspector build test
? Ich mag es.node-inspector
es nicht beendet und erlaubtbuild
undtest
ausgeführt wird, da es für immer läuft. Ich habe einen Link zu einem Snippet hinzugefügt, in dem ich ihn eingerichtet habe.node-inspector &
, im Hintergrund belassen und als erledigt bezeichnet. Hast du irgendwelche Gedanken dazu?grunt node-inspector
und gehe dann zur localhost-URL und sehe keine Quelldateien. Einfach leere Debugger-Tools.grunt node-inspector
undnode --debug-brk Gruntfile.js
aus meinem Grunzverzeichnis. Wenn ich jedoch einen Haltepunkt in der Grunzdatei setze, stürzt dieser nur mit einem Verbindungsfehler ab.Ich habe eine Aufgabe ausgeführt, um meine App auszuführen und den Knoteninspektor zu starten. Es ist weitaus besser als der aktuelle Vorschlag. Sie müssen diese Aufgabe nur in gruntfile hinzufügen:
quelle
Tolle Antworten hier. Im Jahr 2017 können Sie jetzt tun
node --inspect --debug-brk $(which grunt) taskName
Welches druckt so etwas.
To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/232652c3-f63c-4b00-8de9-17dfad5db471
Öffnen Sie diese URL in Chrome und los geht's!
Ich benutze Node 7.3.0 und bin auf einem Mac. Möglicherweise müssen Sie einige der Ratschläge in anderen Beiträgen befolgen, um es unter Windows zum Laufen zu bringen.
quelle
Update 2019
Wenn Sie die Grunzaufgabe im Debug-Modus starten und in der ersten Zeile brechen möchten:
node --inspect-brk $(which grunt) taskName
Wenn Sie die Grunzaufgabe im Debug-Modus an einem bestimmten Port starten möchten:
node --inspect-brk=8080 $(which grunt) taskName
Wenn Sie VSCODE an den Knotenprozess anhängen möchten, auf dem die Debugging-Sitzung von grunt ausgeführt wird, verwenden Sie die folgende Konfiguration in vscode:
quelle