Website-Suche

Das Debuggen von TypeScript in VS Code tritt stattdessen in JavaScript ein


Ich versuche, meine TypeScript-NodeJs-Anwendung in VS Code mit der folgenden launch.json zu debuggen:

   {
   "version": "0.2.0",
      "configurations": [
         {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}/apps/file-server-app/app.ts",
            "outFiles": [
                "${workspaceFolder}/build/**/*.js"
            ],            
            "runtimeArgs": [
                "--require", 
                "ts-node/register"
            ]
        }
      ]
   }

Die Anwendung startet einwandfrei und alles funktioniert wie es sollte, außer den Haltepunkten. Anstatt an der tatsächlichen Zeile zu stoppen, an der ich den Haltepunkt im Typescript-Code gesetzt habe, bricht es an der Zeile im kompilerten Javascript-Äquivalent ab.

Dinge, die ich ausprobiert habe:

  • Aktivieren der Quellkarten und Sicherstellen, dass sie korrekt erzeugt werden
  • Aktivieren der Inline-Quellkarten und sicherstellen, dass sie korrekt erstellt werden
  • Alles auf einem neuen Setup neu installieren

Zusätzliche Informationen:

VSCode Version: 1.46.1
TypeScript Version: 3.8.3

Antwort #1

Es stellt sich heraus, dass dies beabsichtigt im Design von VS Code ist.

Um es zu beheben, können Sie entweder:

  • Setze outFiles in deiner launch.json auf ein leeres Array, damit Sourcemaps nicht entdeckt werden und die Pfadumleitung nicht passiert.
  • oder ts-node fallen lassen und kompilierte Dateien debuggen, oder ts-node verwenden, ohne sie manuell zu kompilieren.

Siehe dieses GitHub-Problem für weitere Details: https://github.com/microsoft/vscode/issues/101927

Antwort #2

Anscheinend führt das Aktivieren der Einstellung allowjs in der tsconfig.json und das Kompilieren von TypeScript mit dieser Einstellung dazu, dass der VS Code-Debugger in die JavaScript-Dateien statt in die TypeScript-Dateien einsteigt. Für den Moment, selbst wenn dies bedeutet, dass Sie Ihre JavaScript-Dateien beim Kompilieren von TypeScript nicht auf Fehler überprüfen können, besteht die vorläufige Lösung darin, die Einstellung allowjs zu deaktivieren, indem Sie sie auf false setzen, wie folgt:

"compilerOptions": {
    //"allowJs": true
}

Verwandte Artikel