Frage Meteor: Debug auf Serverseite


Kennt jemand eine gute Methode, serverseitigen Code zu debuggen? Ich habe versucht, aktivieren Sie Node.js debuggen dann verwenden Sie den Knoten-Inspektor, aber es zeigt nichts von meinem Code.

Ich benutze console.log, aber das ist sehr ineffizient.

Update: Ich habe folgende Prozedur auf meinem Linux-Rechner gefunden:

  1. Wenn Sie Meteor ausführen, werden zwei Prozesse generiert

    process1: / usr / lib / meteor / bin / node /usr/lib/meteor/app/meteor/meteor.js

    process2: / usr / lib / meteor / bin / knoten /home/paul/codes/bbtest_code/bbtest02/.meteor/local/build/main.js --keepalive

  2. Sie müssen kill -s USR1 auf process2 senden

  3. Führen Sie node-inspector aus, und Sie können Ihren Servercode sehen

Bei meinem ersten Versuch modifiziere ich die letzte Zeile des Meteor Startskripts in / usr / lib / meteor / bin / meteor um

exec "$DEV_BUNDLE/bin/node" $NODE_DEBUG "$METEOR" "$@"

und Renn NODE_DEBUG=--debug meteor an der Eingabeaufforderung. Dies setzt nur --debug flag auf process1, so dass ich nur Meteordateien im Node-Inspector sehe und meinen Code nicht finden konnte.

Kann jemand das auf Windows und Mac überprüfen?


76
2018-06-14 14:11


Ursprung


Antworten:


In Meteor 0.5.4 ist das viel einfacher geworden:

Führen Sie zuerst die folgenden Befehle vom Terminal aus:

npm install -g node-inspector
node-inspector &
export NODE_OPTIONS='--debug-brk'
meteor

Und dann öffne dich http://localhost:8080 in Ihrem Browser, um die Node-Inspector-Konsole anzuzeigen.

Aktualisieren

Seit Meteor 1.0 kannst du einfach tippen

meteor debug

Dies ist im Wesentlichen eine Verknüpfung für die oben genannten Befehle, und starten Sie Knoteninspektor in Ihrem Browser wie erwähnt.

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:

meteor shell

85
2018-02-22 10:20



Meteor Apps sind Node.js Apps. Wenn Sie eine Meteor App mit der meteor [run] Befehl, können Sie Konfigurieren Sie die NODE_OPTIONS Umgebungsvariable zum Starten node im Debug-Modus.

Beispiele von NODE_OPTIONS Umgebungsvariablenwerte:

  • --debug
  • --debug=47977 - Geben Sie einen Port an
  • --debug-brk - Brechen Sie die erste Aussage ab
  • --debug-brk=5858 - Geben Sie einen Port an und brechen Sie die erste Anweisung ab

Wenn du export NODE_OPTIONS=--debug, alle meteor Befehl, der von derselben Shell ausgeführt wird, erbt die Umgebungsvariable. Alternativ können Sie das Debuggen nur für einen Lauf mit aktivieren NODE_OPTIONS="--debug=47977" meteor.

Um zu debuggen, führe aus node-inspector in einer anderen Schale, dann gehe zu http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>egal, was node-inspector sagt dir zu rennen.


15
2018-02-14 11:07



Um node.js im Debug-Modus zu starten, habe ich es so gemacht:

  1. Öffnen Sie /usr/lib/meteor/app/meteor/run.js
  2. Vor

    nodeOptions.push(path.join(options.bundlePath, 'main.js')); 
    

    hinzufügen

    nodeOptions.push('--debug');
    

Hier sind weitere praktische Schritte, wie Sie den Debugger Eclipse anhängen können:

  1. Verwenden Sie '--debug-brk' anstelle von '--debug' hier, weil es einfacher für mich ist, node.js mit Eclipse als Debugger anzuhängen.
  2. füge 'Debugger' hinzu in dem Code, in dem Sie debuggen möchten (ich bevorzuge diesen Weg persönlich)
  3. führe Meteor in der Konsole aus
  4. an node.js in Eclipse anhängen (V8-Tools, an localhost anhängen: 5858)
  5. run, warte auf den Debugger

Wenn Sie Meteor in Ihrem Meteor App-Ordner starten, werden Sie sehen, dass "Debugger überwacht Port 5858"in der Konsole.


9
2017-07-29 13:15



Auf Meteor 1.0.3.1 (Update auf Sergey.Simonchik Antwort)

Starten Sie Ihren Server mit meteor run --debug-port=<port-number>

Zeigen Sie den Browser auf http://localhost:6222/debug?port=<port-number>

Woher <port-number> ist ein Port, den Sie angeben.

Fügen Sie in Ihrem Code ein debugger; Wo möchten Sie Ihren Haltepunkt setzen?

Je nachdem wo debugger; aufgerufen wird, wird es entweder in Ihrem Client- oder Server-Browser-Fenster mit geöffnetem Inspektor unterbrochen.


9
2018-02-18 00:56



Ich setze gerne Breakpoints über eine GUI. Auf diese Weise muss ich nicht daran denken, Debugging-Code aus meiner App zu entfernen.

So habe ich es geschafft, es serverseitig für meine lokale Meteor-App zu tun:

meteor debug

Starten Sie Ihre App auf diese Weise.

Öffnen Sie Chrome an die Adresse, die Sie erhalten. Sie müssen möglicherweise installieren https://github.com/node-inspector/node-inspector (Es könnte jetzt mit Meteor gebündelt werden? nicht sicher)

Sie werden einen seltsamen internen Meteorcode sehen (nicht den App-Code, den Sie geschrieben haben). drücke Start um den Code auszuführen. Dieser Code startet Ihren Server einfach, um auf Verbindungen zu warten.

Erst nachdem Sie auf Play geklickt haben, wird ein neues Verzeichnis in Ihrer Debugger-Ordnerstruktur angezeigt "App". Darin befinden sich Ihre Meteor Projektdateien. Setzen Sie dort einen Haltepunkt in die Zeile, die Sie möchten.

Öffne die lokale Adresse deiner App. Dadurch wird Ihr serverseitiger Code ausgeführt und Sie sollten in der Lage sein, Ihren Breakpoint zu treffen!

Hinweis: Sie müssen den Inspektor erneut öffnen und diesen Vorgang jedes Mal wiederholen, wenn die App neu gestartet wird.


7
2017-11-02 16:11



Ab Meteor 1.0.2 ist der beste Weg zum serverseitigen Debuggen direkt über die neue eingebaute Shell: mit laufendem Serverlauf meteor shell. Mehr Infos hier: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell


6
2018-01-29 05:19



Ich bin mir nicht sicher, warum es für dich nicht funktioniert hat.
Ich kann es verwenden, indem ich die Schritte auf der Konsole (Mac) befolge.

$ ps  
$ kill -s USR1 *meteor_node_process_id*  
$ node-inspector &

Die oben genannten Schritte sind auf erwähnt https://github.com/dannycoates/node-inspector. Es dient zum Anhängen von node-inspector an den laufenden Knotenprozess.


5
2018-06-14 18:21



Ich habe ein kleines Meteorpaket namens Meteor-Inspektor Dies vereinfacht die Verwendung von Node-Inspector zum Debuggen von Meteor-Apps. Er verwaltet den Lebenszyklus von node-inspector intern und muss daher den Debugger nicht manuell neu starten, nachdem sich einige Dateien geändert haben.

Weitere Details und konkrete Gebrauchsanweisungen finden Sie unter https://github.com/broth-eu/meteor-inspector.


4
2017-12-14 10:07



für Meteor 1.3.5.2, lauf

Meteortest --debug-port 5858 + n   n ist eine von Null verschiedene Zahl, dies führt dazu, dass node-inspector 8080 + n als Web-Port verwendet.


4
2018-01-05 11:14



WebStorm, die leistungsstarke IDE, die für Open-Source-Entwickler kostenlos ist, macht es viel einfacher, serverseitig zu debuggen.

Ich habe es unter Windows getestet, und die Konfiguration war schmerzlos - siehe meine Antwort.


3
2018-02-12 02:03