Kennt jemand eine gute Methode zum Debuggen von serverseitigem Code? Ich habe versucht, Node.js Debug zu aktivieren und dann Node-Inspector zu verwenden, aber es zeigt keinen meiner Codes an.
Am Ende benutze ich console.log, aber das ist sehr ineffizient.
Update: Ich habe festgestellt, dass das folgende Verfahren auf meinem Linux-Computer funktioniert:
Wenn Sie Meteor ausführen, werden zwei Prozesse erzeugt
process1: / usr / lib / meteor / bin / node /usr/lib/meteor/app/meteor/meteor.js
process2: / usr / lib / meteor / bin / node /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js --keepalive
Sie müssen kill -s USR1 auf process2 senden
Führen Sie Node-Inspector aus und Sie können Ihren Servercode sehen
Bei meinem ersten Versuch ändere ich die letzte Zeile im Meteor-Startskript in / usr / lib / meteor / bin / meteor auf
exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$@"
und NODE_DEBUG=--debug meteor
an der Eingabeaufforderung ausführen . Dies hat nur das Flag --debug auf process1 gesetzt, sodass ich nur Meteor-Dateien im Node-Inspector sehe und meinen Code nicht finden konnte.
Kann jemand dies auf Windows- und Mac-Computern überprüfen?
quelle
Antworten:
In Meteor 0.5.4 ist dies viel einfacher geworden:
Führen Sie zuerst die folgenden Befehle vom Terminal aus:
Öffnen
http://localhost:8080
Sie dann in Ihrem Browser die Node-Inspector-Konsole.Aktualisieren
Seit Meteor 1.0 können Sie einfach tippen
Dies ist im Wesentlichen eine Verknüpfung für die oben genannten Befehle. Starten Sie dann den Knoteninspektor wie erwähnt in Ihrem Browser.
Aktualisieren
In Meteor 1.0.2 wurde eine Konsole oder Shell hinzugefügt. Es kann nützlich sein, Variablen auszugeben und Befehle auf dem Server auszuführen:
quelle
meteor
diesen Debugger ausführe , wird meine Meteor-App ausgeführt und daran gehindert, irgendetwas clientseitig auszuführen .console.log('asd') [object Object]
Meteor-Apps sind Node.js Apps. Wenn Sie eine Meteor-App mit dem
meteor [run]
Befehl ausführen, können Sie dieNODE_OPTIONS
Umgebungsvariablenode
so konfigurieren , dass sie im Debug-Modus startet .Beispiele für
NODE_OPTIONS
Umgebungsvariablenwerte:--debug
--debug=47977
- Geben Sie einen Port an--debug-brk
- Pause bei der ersten Aussage--debug-brk=5858
- Geben Sie einen Port an und brechen Sie bei der ersten Anweisung abWenn Sie dies tun, erben
export NODE_OPTIONS=--debug
allemeteor
Befehle, die von derselben Shell ausgeführt werden, die Umgebungsvariable. Alternativ können Sie das Debuggen nur für einen Lauf mit aktivierenNODE_OPTIONS="--debug=47977" meteor
.Führen Sie zum Debuggen
node-inspector
eine andere Shell aus und gehen Sie dann zuhttp://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>
, unabhängig davon, wasnode-inspector
Sie zum Ausführen auffordert.quelle
Um node.js im Debug-Modus zu starten, habe ich es folgendermaßen gemacht:
Vor
hinzufügen
Hier sind zusätzliche praktische Schritte zum Anhängen der Debugger-Eclipse:
Wenn Sie Meteor in Ihrem Meteor-App-Ordner starten, sehen Sie den " Debugger, der Port 5858 überwacht " in der Konsole.
quelle
/usr/lib
und/usr/local/
aus unbekannten Gründen dupliziert . Wenn es bei Ihnen nicht funktioniert, versuchen Sie es/usr/local/meteor/app/meteor/run.js
anstelle von/usr/lib/meteor/app/meteor/run.js
Auf Meteor 1.0.3.1 (Update auf Sergey.Simonchik Antwort)
Starten Sie Ihren Server mit
meteor run --debug-port=<port-number>
Zeigen Sie mit dem Browser auf
http://localhost:6222/debug?port=<port-number>
Wo
<port-number>
ist ein Port, den Sie angeben?Fügen
debugger;
Sie in Ihrem Code eine Stelle hinzu, an der Sie Ihren Haltepunkt festlegen möchten.Je nachdem, wo
debugger;
aufgerufen wird, wird es entweder in Ihrem Client- oder Server-Browserfenster mit geöffnetem Inspektor unterbrochen.quelle
Ich setze gerne Haltepunkte über eine GUI. Auf diese Weise muss ich nicht daran denken, Debugging-Code aus meiner App zu entfernen.
So habe ich es auf der Serverseite für meine lokale Meteor-App geschafft:
Starten Sie Ihre App auf diese Weise.
Öffnen Sie Chrome unter der angegebenen Adresse. Möglicherweise müssen Sie https://github.com/node-inspector/node-inspector installieren (möglicherweise wird es jetzt mit Meteor geliefert? Nicht sicher).
Sie werden einen seltsamen internen Meteor-Code sehen (nicht den App-Code, den Sie geschrieben haben). Drücken Sie die Wiedergabetaste , um den Code auszuführen. Dieser Code startet einfach Ihren Server, um auf Verbindungen zu warten.
Erst nachdem Sie die Wiedergabetaste gedrückt haben, wird in Ihrer Debugger-Ordnerstruktur ein neues Verzeichnis mit dem Namen "App" angezeigt . Darin befinden sich Ihre Meteor-Projektdateien. Setzen Sie dort einen Haltepunkt in der gewünschten Zeile.
Öffnen Sie die lokale Adresse Ihrer App . Dadurch wird Ihr serverseitiger Code ausgeführt und Sie sollten in der Lage sein, Ihren Haltepunkt zu erreichen!
Hinweis: Sie müssen den Inspektor erneut öffnen und diesen Vorgang bei jedem Neustart Ihrer App erneut durchführen!
quelle
Ab Meteor 1.0.2 ist der wahrscheinlich beste Weg zum serverseitigen Debuggen direkt über die neue integrierte Shell: mit laufendem Serverlauf
meteor shell
. Weitere Informationen hier: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shellquelle
Ich bin mir nicht sicher, warum es bei Ihnen nicht funktioniert hat.
Ich kann es verwenden, indem ich die Schritte auf der Konsole (Mac) befolge.
Die oben genannten Schritte sind unter https://github.com/dannycoates/node-inspector aufgeführt . Es dient zum Anhängen des Knoteninspektors an den laufenden Knotenprozess.
quelle
debugger
als auch Haltepunkte im Inspektor hinzugefügt , aber keiner von beiden hat funktioniert. Irgendeine Idee warum?ps | grep node
(oder ähnliches) ansehen, stellen Sie sicher, dass Sie die zu signalisierende PID main.js auswählen, nicht den übergeordneten Knotenprozess. So habe ich es zum Laufen gebracht.Ich habe ein kleines Meteor-Paket namens Meteor-Inspector geschrieben, das die Verwendung von Node-Inspector zum Debuggen von Meteor-Apps vereinfacht. Es verwaltet intern den Lebenszyklus von Node-Inspector und daher muss der Benutzer den Debugger nicht manuell neu starten, nachdem einige Dateien geändert wurden.
Weitere Details und konkrete Gebrauchsanweisungen finden Sie unter https://github.com/broth-eu/meteor-inspector .
quelle
für Meteor 1.3.5.2 ausführen
quelle
WebStorm , die leistungsstarke IDE, die für Open Source-Entwickler kostenlos ist, erleichtert das Debuggen auf dem Server erheblich.
Ich habe es unter Windows getestet und die Konfiguration war schmerzlos - siehe meine Antwort .
quelle
Ein Inspektor, der meine Probleme löst, ist die Meteor-Serverkonsole. Hier ist der Prozess, den ich befolgt habe, um es zu installieren:
Fügen Sie in Ihrem Projektordner das Smart-Paket hinzu
server-eval
:Für Meteor 1.0:
Starten Sie den Meteor neu.
crx
Chrome-Erweiterungsdatei hier herunter .crx
Datei auf die Erweiterungsseite.Überprüfen Sie den Webinspektor, um den serverseitigen Code zu bewerten:
Im Vergleich zum Node-Inspector habe ich eine klarere Ausgabe.
quelle
Wenn Sie den offiziellen Debugger von nodeJS bevorzugen, können Sie
NODE_OPTIONS='--debug' meteor
und dann (auf einer anderen Shell) aufrufennode debug localhost:5858
.quelle