2016-01-17 5 views
17

Ich habe zuvor Schluck und run Schluck verwendet, um meine Anwendung und Listener von der Visual Studio Code debugger zu starten, aber musste vor kurzem zu laufenden Skripten über npm stattdessen wechseln. Leider konnte ich VSCode nicht in der Lage sein, npm Skripte über den Debugger laufen zu lassen, also musste ich Knoten ausführen, um meinen Server direkt zu starten, der meine Listener-Aufgaben loswird, die den Code automatisch neu luden.Wie Debuggen mit npm Ausführen von Skripts von VSCode?

Das scheint etwas zu sein, das einfach sein sollte, aber bisher hatte ich nicht viel Glück. Unten ist ein Ausschnitt aus meiner launch.json-Datei, den ich zu verwenden versuchte, aber npm konnte nicht gefunden werden.

{ 
    ... 
     "program": "npm", 
     "args": [ 
      "run", 
      "debug" 
     ], 
    ... 
} 

Das gibt mir den folgenden Fehler.

Fehler request 'Start': Programm 'c: \ myproject \ npm' existiert nicht

Verwandte Ressourcen:

Antwort

-1

NPM-Skripte und schluck ist nicht wirklich zum Starten Ihrer Anwendung gedacht, sondern zum Ausführen von Aufgaben wie der Kompilierung. Wenn es eine Knoten-Anwendung ist, würde ich Ihnen empfehlen, Ihre launch.json auf diese Weise ohne npm zu konfigurieren. Wenn Sie Listener oder Prozessmanager wie PM2 verkompliziert haben, starten Sie stattdessen Ihre Anwendung manuell über den Prozessmanager und verwenden Sie dann eine Attach-Konfiguration.

Für npm Aufgaben können Sie eine tasks.json mit "command": "npm" und "args": ["run"] angeben.

+0

Ich hatte kein Glück mit der Attach-Option, aber ich habe auch nicht wirklich versucht, vorausgesetzt, ich würde auf ähnliche Probleme stoßen. Beliebige Dokumentation, auf die Sie verweisen könnten, wenn Sie einen Knoten anhängen, wenn der Knoten nicht direkt ausgeführt wird - wie zum Beispiel durch gulp, webpack oder npm oder alle drei gleichzeitig :(- wäre hilfreich. – jpierson

+6

BTW, der Trend, dass Ich sehe auftauchen ist zu machen "npm Start" der Standard Weg, um eine Knoten-Anwendung zu starten. – jpierson

+1

Schluck ist nur ein NodeJS-Skript selbst. Sie können "Programm" auf "./Node_modules/gulp/bin/gulp.js" (installieren gulp as devDependency) und den Namen des Tasks im Array args eingeben – felixfbecker

13
  1. Konfigurieren eines neuen Debug-Ziel in Ihrem .vscode/launch.json:

    { 
        "name": "Attach To npm", 
        "type": "node", 
        "request": "attach", 
        "port": 5858, 
        "address": "localhost", 
        "restart": false, 
        "sourceMaps": false, 
        "outDir": null, 
        "localRoot": "${workspaceRoot}", 
        "remoteRoot": null 
    } 
    
  2. Config Ihre npm den Knoten mit --debug-brk Option auszuführen:

    "scripts": { 
        "start": "node app.js", 
        "debug": "node --debug-brk app.js" 
        ... 
    
  3. Starten Sie Ihre App aus der Shell als:

    $npm run debug 
    
  4. Das Programm wird standardmäßig im Hafen 5858 wartet der Debugger

  5. So führen Sie den Debugger in Visual Studio-Code ("Attach To npm") zu befestigen.

  6. Debugger Enjoy :)

+0

Heutzutage das Knoten Flag ist - inspect-brk, und der Standard-Port ist 9229, zumindest auf meinem Rechner. – kaba

12

Es scheint, dass VS-Code wird npm Skripte und andere Start-Szenarien im release from October 2016 unterstützen.

Unten ist ein Beispiel wie es war proposed on GitHub.

Pakete.json

"scripts": { 
    "debug": "node --nolazy --debug-brk=5858 myProgram.js" 
    }, 

vscode Start Config

{ 
    "name": "Launch via NPM", 
    "type": "node", 
    "request": "launch", 
    "cwd": "${workspaceRoot}", 
    "runtimeExecutable": "npm", 
    "runtimeArgs": [ 
     "run-script", "debug" 
    ], 
    "port": 5858 
} 
+4

Ich bekomme "Debug-Ziel kann nicht gestartet werden (spawn npm ENOENT)." für das obige, auf VSCode 1.7.2 – andreister

+9

@andrister Unter Windows habe ich es mit "npm.cmd" anstelle von einfach "npm" funktioniert! – electrotype

+1

Ich wundere mich über Fälle, in denen Sie ein Skript wie: "Grunt Test" haben. Was dann? wenn Sie den Knoten nicht manuell starten. – jpierson

0

Ich habe versucht, die angegebenen Lösungen von GutiMac und Jpierson aber aus irgendwelchen Gründen war ich nicht in der Lage, die Debugger Arbeit mit einem der unter zu machen.

Eine alternative Lösung, die gut für mich gearbeitet (Ubuntu 16, Knoten 8.9.1, 1.8.1 VS) ist diese einfache App Launcher zu verwenden (in der Konfiguration Array von VS launch.json hinzugefügt werden):

{ 
    "type": "node", 
    "request": "launch", 
    "name": "Launch Node App", 
    "program": "${workspaceFolder}/my-app/my-npm-start-script-dir/index.js" 
} 
Verwandte Themen