wake-up-neo.net

Node-Inspector mit Grunt-Aufgaben verwenden

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 Tasks zu verwenden (weil Benutzer Tasks separat ausführen können).

101
JuanO

Um grunt in debug auszuführen, müssen Sie das grunt-Skript explizit an den Knoten übergeben:

node-debug $(which grunt) task

und fügen Sie eine debugger;-Zeile in Ihre Aufgabe ein. node-inspector öffnet dann einen Browser mit Debugging-Tools.

Bearbeiten Sie den 28. Februar 2014

node-inspector hat den Befehl node-debug hinzugefügt, der den Knoten in einem --debug-Status startet und den Browser zur Seite node-inspector öffnet. Er wird angehalten, wenn er die erste debugger-Zeile erreicht oder einen Haltepunkt setzt.

Bearbeiten Sie den 30. Januar 2015

Unter Windows ist die Sache etwas komplizierter. Anweisungen finden Sie in der Antwort von @ e.gluhotorenko.

135
David Souther

Windows-Lösung

Lauf 

node --debug-brk c:\Users\username\AppData\Roaming\npm\node_modules\grunt-cli\bin\grunt taskname

von cmd im Verzeichnis mit Ihrem Gruntfile.js. Vergessen Sie nicht, die debugger;-Zeile an den erforderlichen Stellen anzubringen.

39

Um zu debuggen, müssen wir die grunt-Datei unter bin ändern. Auf meinem Rechner ist grunt global installiert, also ging ich zu /usr/local/lib/node_modules/grunt/binIch habe die Datei geöffnet und Folgendes geändert:

#!/usr/bin/env node

Zu

#!/usr/bin/env node --debug-brk

--debug-brk bricht in der ersten Zeile von Javascript ab.

Dies allein reicht jedoch nicht aus, da Sie in der Dropdown-Liste im Knoteninspektor nicht finden können, dass Sie die grunteste Task-js-Datei finden. Sie müssen also die Datei ändern, die Sie für das Debuggen interessieren, indem Sie debugger; hinzufügen. Wo soll der Haltepunkt geschehen? Jetzt können Sie nach der ersten Pause auf "Weiter" klicken, und Sie brechen in Ihre debugger;-Zeile ein

Ziemlich kludgy, aber es ist der einzige Weg, den ich bisher gefunden habe.

7
user1577390

Ich habe vor kurzem einen Grunt-Node-Inspector erstellt, um den Node-Inspector mit dem Rest Ihres grunzigen Workflows einfach zu konfigurieren. Schauen Sie sich das an: https://github.com/ChrisWren/grunt-node-inspector

Hier ist ein Abschnitt einer Gruntdatei, die veranschaulicht, wie Sie einen Grunt-Task mit Hilfe von Grunt-Node-Inspector, Grunt-Concurrent und Grunt-Shell debuggen können: https://github.com/CabinJS/Cabin/blob/master /Gruntfile.js#L44-L77

6
ChrisWren

Ich habe eine Aufgabe gemacht, um meine App auszuführen und Node-Inspector zu starten. Es ist weitaus besser als der aktuelle Vorschlag.

  grunt.registerTask('debug', 'My debug task.', function() {
        var done = this.async();
        grunt.util.spawn({
            cmd: 'node',
            args: ['--debug', 'app.js'],
            opts: {
                //cwd: current workin directory
            }
        },
        function (error, result, code) {
            if (error) {
                grunt.log.write (result);
                grunt.fail.fatal(error);
            }
            done();
        });
        grunt.log.writeln ('node started');
        grunt.util.spawn({
            cmd: 'node-inspector',
            args: ['&'],
            opts: {
                //cwd: current workin directory
            }
        },
        function (error, result, code) {
            if (error) {
                grunt.log.write (result);
                grunt.fail.fatal(error);
            }
            done();
        });
        grunt.log.writeln ('inspector started');
    });
4
olivier dufour

Tolle Antworten hier. In 2017 können Sie jetzt tun

node --inspect --debug-brk $(which grunt) taskName

Welches druckt so etwas wie.

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 verwende Node 7.3.0 und ich bin auf dem Mac. Möglicherweise müssen Sie einige der Ratschläge in anderen Beiträgen befolgen, um es unter Windows zum Laufen zu bringen.

3
RoccoB

Aktualisierung 2019

  • Wenn Sie die Grunt-Task im Debug-Modus starten und in der ersten Zeile unterbrechen möchten:

    node --inspect-brk $(which grunt) taskName

  • Wenn Sie die Grunt-Task an einem bestimmten Port im Debug-Modus starten möchten:

    node --inspect-brk=8080 $(which grunt) taskName

  • wenn Sie VSCODE an den Knotenprozess anhängen möchten, auf dem die Debugsitzung von grunt ausgeführt wird, verwenden Sie die folgende Konfiguration in vscode:

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.Microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [

    {
      "type": "node",
      "request": "attach",
      "name": "Attach by port IP 5656",
      "port": 8080
    }
  ]
}

2
Ze Rubeus