Ich weiß nicht, warum Heroku das nicht besser ist hervorzuheben, aber die Dokumentation, die Sie mit Heroku für Remote-Debugging müssen, ist auf dieser Heroku Exec (SSH tunneling) page. Momentan benötigen die node.js-Informationen ein wenig Update, um das neuere Inspector-Protokoll zu unterstützen, aber die wichtigen Details sind alle da.
Zuerst müssen Sie die Procfile
an der Wurzel Ihres Projektbaum bearbeiten Heroku zu sagen, Knoten zu starten mit Fehlervermeidung:
web: node --inspect ./server.js (or ./app.js or whatever your entry point is)
Dann Sie das Heroku CLI Dienstprogramm zum Tunnel der Debug-Port zwischen verwenden müssen Computer und Ihre Heroku-Anwendung. Wenn Sie das noch nicht installiert haben, lesen Sie die Dokumentation zur Installation und loggen Sie sich in Ihr Heroku-Konto ein.
Um die Verbindung aktivieren Sie dies einmal ausführen müssen:
heroku ps:exec
oder wenn Sie mehrere Heroku Anwendungen laufen:
heroku ps:exec -a my-app-name
Sobald Sie eine $
Eingabeaufforderung erhalten, schlug ctrl- C zum Beenden.
Als nächstes starten Sie den Tunnel:
heroku ps:forward 9229 [-a my-app-name]
Jetzt ist Ihre Anwendung ist von jedem IDE zur Verfügung, die Node.js Debugging unterstützt. Für Visual Studio Code, sollten Sie eine launch.json
Konfigurationseintrag erstellen, die wie folgt aussieht:
{
"type": "node",
"request": "attach",
"name": "Heroku",
"address": "localhost",
"port": 9229,
"protocol": "inspector",
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
},
Sie nun in der Lage sein sollte, die Debug-Sitzung in den Editor zu starten und haben es zu einem Lauf App innerhalb weniger Sekunden eine Verbindung . Alle normalen Debugging-Funktionen, einschließlich Breakpoints, Callstacks, Variablenprüfung usw. sollten funktionieren.
Sie haben Recht! Das ist ein guter Anfang, aber ich brauche einen Debugger. Ich muss eine JSON-Anfrage prüfen, die ich erhalte. Theoretisch könnte der Inhalt mit req.body aufgerufen werden, aber req.body löst einen undefinierten Fehler für das body-Attribut aus. Wenn ich den req logge, bekomme ich [object] wenn ich Json.stringify (req) logge, erhalte ich einen zirkulären Fehler. Ich habe keine andere Wahl, als das req-Objekt zu untersuchen :( – RaresI