Pytanie Meteor: Debugowanie po stronie serwera


Czy ktoś zna dobrą metodę debugowania kodu po stronie serwera? Próbowałem włączyć debugowanie Node.js, a następnie użyłem inspektora węzłów, ale nie pokazuje on żadnego z mojego kodu.

W końcu używam console.log, ale to jest bardzo nieefektywne.

Aktualizacja: Znalazłem następujące procedury działa na moim komputerze z systemem Linux:

  1. Kiedy uruchomisz Meteor, uruchomi on dwa procesy

    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

  2. Musisz wysłać kill -s USR1 na process2

  3. Uruchom węzeł-inspektor, a zobaczysz swój kod serwera

Przy mojej pierwszej próbie modyfikuję ostatnią linijkę skryptu uruchamiającego meteor w / usr / lib / meteor / bin / meteor

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

i biegnij NODE_DEBUG=--debug meteor w wierszu polecenia. To tylko umieszcza flagę --debug na process1, więc widzę tylko pliki meteorów na inspektorze węzła i nie mogę znaleźć mojego kodu.

Czy ktoś może to sprawdzić na komputerze z systemem Windows i Mac?


76
2018-06-14 14:11


pochodzenie


FYI, zamiast console.log, użyj Meteor._debug (kończy się wywoływaniem console.log, ale jest wiadomość, że pewnego dnia zostanie poprawiona). - Josh
Zobacz moją odpowiedź, na MAC działa, mogłem zobaczyć i debugować moje pliki js. - Nachiket
Próbowałem tego na moim Macu, ale nie mam wyjścia. - Gezim
@ Harmal000, który podłączyłeś do tego pytania - czy chciałeś zamieścić link do innego? - Kevin
Ten artykuł jest bardzo przydatny w debugowaniu w meteor.js joshowens.me/easily-debugging-meteor-js - Julien Leray


Odpowiedzi:


W Meteor 0.5.4 stało się to o wiele łatwiejsze:

Najpierw uruchom następujące polecenia z terminala:

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

A potem otwórz http://localhost:8080 w przeglądarce, aby wyświetlić konsolę inspekcji węzłów.

Aktualizacja

Od Meteor 1.0 możesz po prostu pisać

meteor debug

co jest skrótem do powyższych poleceń, a następnie uruchom inspektora węzłów w przeglądarce, jak wspomniano.

Aktualizacja

W Meteor 1.0.2 dodano konsolę lub powłokę. Może się przydać wyprowadzanie zmiennych i uruchamianie poleceń na serwerze:

meteor shell

85
2018-02-22 10:20



Dziękujemy za przesłanie odpowiedzi! Pamiętaj, aby przeczytać FAQ na temat samooceny ostrożnie. Zauważ, że tak jest wymagany że publikujesz zrzeczenie się za każdym razem, gdy łączysz się z własną witryną / produktem. - Andrew Barber
Dzięki, nie wiedziałem! - Sander van den Akker
Jak wyłączyć ten debugger? Za każdym razem, gdy biegnę meteor ten debugger uruchamia i blokuje moją aplikację meteorytów od uruchamiania dowolnej strony klienta. - fuzzybabybunny
czy możliwe jest drukowanie wartości? w jaki sposób? - juanpastas
meteor debug zrobił trik w Meteor 1.1.0.2. Dzięki. - AlikElzin-kilaka


Aplikacje Meteor są aplikacjami Node.js. Podczas uruchamiania aplikacji Meteor z meteor [run] polecenie, możesz skonfiguruj NODE_OPTIONS Zmienna środowiskowa do uruchomienia node w trybie debugowania.

Przykłady NODE_OPTIONS wartości zmiennych środowiskowych:

  • --debug
  • --debug=47977 - określ port
  • --debug-brk - zepsuć pierwsze zdanie
  • --debug-brk=5858 - podaj port i zrób przerwę w pierwszym zestawieniu

Jeśli ty export NODE_OPTIONS=--debug, wszystko meteor polecenie uruchamiane z tej samej powłoki dziedziczy zmienną środowiskową. Alternatywnie możesz włączyć debugowanie tylko dla jednego uruchomienia, z NODE_OPTIONS="--debug=47977" meteor.

Aby debugować, uruchom node-inspector w innej powłoce, a następnie przejdź do http://localhost:8080/debug?port=<the port you specified in NODE_OPTIONS>niezależnie od tego node-inspector mówi, abyś uciekał.


15
2018-02-14 11:07





Aby uruchomić node.js w trybie debugowania, zrobiłem to w następujący sposób:

  1. otwórz /usr/lib/meteor/app/meteor/run.js
  2. przed

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

    Dodaj

    nodeOptions.push('--debug');
    

Oto dodatkowe praktyczne kroki, aby załączyć zaćmienie debuggera:

  1. użyj "--debug-brk" zamiast "--debug" tutaj, ponieważ łatwiej jest mi dołączyć node.js używając eclipse jako debuggera.
  2. dodaj "debugger;" w kodzie, w którym chcesz debugować. (Wolę w ten sposób osobiście)
  3. uruchom meteor w konsoli
  4. dołącz do pliku node.js w środowisku Eclipse (narzędzia V8, dołącz do localhost: 5858)
  5. uruchom, poczekaj na trafienie debuggera

kiedy uruchomisz meteor w folderze aplikacji meteorytów, zobaczysz to "słuchanie debuggera na porcie 5858"w konsoli.


9
2017-07-29 13:15



jeśli używasz mrt, oczywiście ścieżka do run.js jest inna. - Jameson Quinn
... jak w ~ / .meteorite / meteors / meteor / meteor / 0a148c69d6af9832006a6f6d27cc112ed90cb3e4 / app / meteor / - Jameson Quinn
Moje pliki są duplikowane /usr/lib i /usr/local/ z nieznanych przyczyn. Jeśli to nie działa, spróbuj edytować /usr/local/meteor/app/meteor/run.js zamiast /usr/lib/meteor/app/meteor/run.js - zVictor
Dzięki, twoje rozwiązanie jest najłatwiejsze, jakie kiedykolwiek znalazłem. Nie wymaga zabijania ani ustawiania zmiennych za pomocą wiersza poleceń. - zVictor


On Meteor 1.0.3.1 (aktualizacja do odpowiedzi Sergeya.Simonchika)

Uruchom swój serwer za pomocą meteor run --debug-port=<port-number>

Przejdź do przeglądarki http://localhost:6222/debug?port=<port-number>

Gdzie <port-number> jest określony przez ciebie port.

W swoim kodzie dodaj debugger; gdzie chcesz ustawić punkt przerwania.

W zależności od miejsca debugger; jest wywoływana, zostanie przerwana w oknie przeglądarki klienta lub serwera z otwartym inspektorem.


9
2018-02-18 00:56





Lubię ustawiać punkty przerwania za pomocą GUI. W ten sposób nie muszę pamiętać o usunięciu kodu debugowania z mojej aplikacji.

W ten sposób udało mi się zrobić to po stronie serwera dla mojej lokalnej aplikacji meteorologicznej:

meteor debug

uruchom swoją aplikację w ten sposób.

Otwórz Chrome na adres, który Ci daje. MOŻESZ wymagać instalacji https://github.com/node-inspector/node-inspector (teraz może być dołączony do Meteora? nie wiem)

Zobaczysz jakiś dziwny wewnętrzny kod meteorytowy (a nie kod aplikacji, który napisałeś). naciśnij Graj uruchomić kod. Ten kod po prostu uruchamia serwer, aby nasłuchiwać połączeń.

Dopiero po naciśnięciu przycisku Play zobaczysz nowy katalog w strukturze folderu debuggera "aplikacja". Istnieją pliki projektów meteorytów. Ustaw punkt przerwania tam, gdzie chcesz.

Otwórz lokalny adres swojej aplikacji. To uruchomi twój kod po stronie serwera i powinieneś być w stanie trafić swój punkt przerwania!

Uwaga: musisz ponownie otworzyć inspektora i powtórzyć ten proces za każdym razem, gdy Twoja aplikacja zostanie ponownie uruchomiona!


7
2017-11-02 16:11





Od wersji 1.0.2 Meteor prawdopodobnie najlepszy sposób na debugowanie po stronie serwera jest bezpośrednio przez nową wbudowaną powłokę: przy uruchomionym uruchomieniu serwera meteor shell. Więcej informacji tutaj: https://www.meteor.com/blog/2014/12/19/meteor-102-meteor-shell


6
2018-01-29 05:19





Nie wiem, dlaczego to nie działa.
Mogę go użyć, wykonując następujące czynności na konsoli (Mac).

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

Powyższe kroki są wymienione na https://github.com/dannycoates/node-inspector. Służy on do przyłączenia inspektora węzłów do procesu węzła operacyjnego.


5
2018-06-14 18:21



Tak, to też nie działa. - Gezim
Testowałem tylko na Macu, czy używasz Maca? - Nachiket
Tak, mam Maca. Jak dodać punkt przerwania w kodzie? Jakie są dokładnie kroki, których używasz do całej sprawy? - Gezim
po wyżej (tej odpowiedzi) kroki, zacznę inspektora. $ node-inspector & opened 127.0.0.1:8080/debug?port=5858 w chrome. Byłem w stanie zobaczyć moje pliki na zakładce źródło w webkit-inspector - Nachiket
Próbowałem tego, dodając oba debugger i pułapki w inspektorze, ale żaden z nich nie zadziałał. Każdy pomysł, dlaczego? - Jakub Arnold


Napisałem mały pakiet o nazwie meteor inspektor meteorytów co upraszcza korzystanie z inspektora węzłów do debugowania aplikacji meteorów. Wewnętrznie zarządza cyklem życia inspektora węzłów, a zatem użytkownik nie musi ręcznie restartować debugera po zmianie niektórych plików.

Aby uzyskać więcej informacji i konkretnych instrukcji użytkowania spójrz na https://github.com/broth-eu/meteor-inspector.


4
2017-12-14 10:07





dla meteorytu 1.3.5.2, uruchom

meteor debug - debug-port 5858 + n   n jest liczbą niezerową, co spowoduje, że inspektor węzłów użyje 8080 + n jako portu sieciowego.


4
2018-01-05 11:14





WebStorm, potężny IDE wolny dla programistów open source, znacznie ułatwia debugowanie po stronie serwera.

Przetestowałem to w systemie Windows, a konfiguracja była bezbolesna - patrz moja odpowiedź.


3
2018-02-12 02:03





Inspektorem, który rozwiązuje moje problemy, jest konsola serwera meteorytów. Oto proces, który podjąłem, aby go zainstalować:

  1. W folderze projektu dodaj pakiet inteligentny server-eval:

    mrt add server-eval
    

    Dla Meteor 1.0:

    meteor add gandev:server-eval
    
  2. Uruchom ponownie meteor.

  3. Pobieranie crx Plik rozszerzenia Chrome z tutaj.
  4. Otwórz stronę rozszerzeń w Chrome i przeciągnij crxplik do strony rozszerzeń.
  5. Uruchom ponownie Chrome.
  6. Sprawdź inspektora sieci Web pod kodem strony eval serwera:

    enter image description here

W porównaniu z inspektorem węzła mam jaśniejszy wynik.


3
2017-07-01 23:11



Dobry, ale nie działa z przerwami? - Sabrina Leggett
z tego, co pamiętam, działało z przerwami, ale nie jestem pewien. - juanpastas
pamiętasz, jak je ustawiasz? za pomocą narzędzi programistycznych lub kodowania? - Sabrina Leggett
narzędzia programistyczne, ale nie pamiętam dokładnie w jaki sposób - juanpastas