Jak debugować aplikację serwera Node.js?
Obecnie używam głównie debugowania alertów za pomocą instrukcji drukowania takich jak to:
sys.puts(sys.inspect(someVariable));
Musi być lepszy sposób na debugowanie. Wiem, że Google Chrome ma debugger wiersza polecenia. Czy ten debugger jest dostępny również dla Node.js?
javascript
node.js
debugging
google-chrome-devtools
Fabian Jakobs
źródło
źródło
--inspect-brk
INSTEAD OF,--inspect
jeśli chcesz debugować rzeczywisty kod serwera podczas ładowania. Zobacz stackoverflow.com/questions/59596138Odpowiedzi:
węzeł-inspektor może uratować dzień! Używaj go z dowolnej przeglądarki obsługującej WebSocket . Punkty przerwania, profilowanie, kodowanie na żywo itp. To naprawdę niesamowite.
Zainstaluj z:
Następnie uruchomić:
źródło
Debugowanie
Profilowy
node --prof ./app.js
node --prof-process ./the-generated-log-file
Zrzuty
Flamegraphs
Rysunek kalkowy
Logowanie
Biblioteki wysyłające informacje debugujące
Biblioteki, które poprawiają informacje o śledzeniu stosu
Benchmarking
ab -n 100000 -c 1 http://127.0.0.1:9778/
Inny
Dziedzictwo
Są używane do pracy, ale nie są już utrzymywane lub nie mają już zastosowania do nowoczesnych wersji węzłów.
źródło
look
moduł, jak wskazano w stackoverflow.com/questions/12864221/nodejs-memory- profilowanienprof
+v8.log
fromnode --prof
.V8 debugger wydany w ramach Google Developer Tools Chrome mogą być używane do debugowania skryptów node.js. Szczegółowe wyjaśnienie jak to działa można znaleźć w wiki node.js GitHub .
źródło
https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27#.fitvuaumt
Węzeł ma wbudowany debugger GUI od wersji 6.3 (przy użyciu DevTools Chrome)
Po prostu przekaż flagę inspektora, a otrzymasz inspektora adres URL:
Możesz także przełamać pierwszą linię, przechodząc
--inspect-brk
zamiast niej.źródło
Node.js w wersji 0.3.4+ ma wbudowaną obsługę debugowania.
node debug script.js
Podręcznik: http://nodejs.org/api/debugger.html
źródło
--debug
nadebug
bez myślników. Tak w końcu udało mi się to uruchomić. To mylące--debug
idebug
zrobić dwie różne rzeczy.app is already running...
”, gdy próbuję kontynuować i natrafiam na instrukcję, która próbuje uzyskać dane wejściowe, upuszcza mnie z powrotem po pytaniu debugowania, zamiast pozwalać mi wprowadzić dane wejściowe, które są wymagane.Visual Studio Code będzie moim wyborem do debugowania. Bez kosztów instalowania jakichkolwiek narzędzi lub
npm install
rzeczy. Wystarczy ustawić punkt początkowy aplikacji w pakiecie.json, a VSCode automatycznie utworzy plik konfiguracyjny wewnątrz twojego rozwiązania. JestopartynaElectronie, na którym zbudowane są edytory takie jak Atom.źródło
Ja osobiście korzystam z JetBrains WebStorm, ponieważ jest to jedyne znalezione przeze mnie IDE JavaScript, które jest idealne zarówno dla JavaScript jak i frontendu.
Działa na wielu systemach operacyjnych i ma wbudowane debugowanie Node.js (a także mnóstwo innych rzeczy] ( http://www.jetbrains.com/webstorm/features/index.html ).
Moje jedyne „problemy” / elementy z listy życzeń
sąbyły :Wydaje się być bardziej zasobny w Maca niż WindowsW wersji 6 nie wydaje się to już problemem.Byłoby miło, gdyby miał obsługę Snippet (podobnie jak w Sublime Text 2 - tj. Wpisz „fun” i dotknij „tab”, aby włączyć funkcję.Patrz komentarz @WickyNilliams poniżej - W przypadku szablonów na żywo masz również obsługę fragmentów.źródło
Wiele świetnych odpowiedzi tutaj, ale chciałbym dodać mój pogląd (w oparciu o ewolucję mojego podejścia)
Dzienniki debugowania
Spójrzmy prawdzie w oczy, wszyscy kochamy coś dobrego,
console.log('Uh oh, if you reached here, you better run.')
a czasem to działa świetnie, więc jeśli jesteś niechętny, aby odsunąć się od niego zbyt daleko, dodaj przynajmniej trochę blingów do dzienników za pomocą debugowania Visionmedia .Interaktywne debugowanie
Przydatne, jak może być logowanie w konsoli, do profesjonalnego debugowania musisz zakasać rękawy i utknąć. Ustaw punkty przerwania, przejdź przez kod, sprawdzaj zakresy i zmienne, aby zobaczyć, co powoduje to dziwne zachowanie. Jak wspomnieli inni, inspektor węzłów to tak naprawdę kolana pszczół. Robi wszystko, co możesz zrobić dzięki wbudowanemu debuggerowi, ale używając tego znanego interfejsu Chrome DevTools. Jeśli, podobnie jak ja, używasz Webstorm , oto przydatny przewodnik do debugowania z tego miejsca.
Stosy śladów
Domyślnie nie możemy prześledzić szeregu operacji w różnych cyklach pętli zdarzeń (tyknięcia). Aby obejść ten problem, spójrz na longjohn (ale nie w produkcji!).
Wycieki pamięci
Dzięki Node.js możemy oczekiwać, że proces serwera pozostanie bezczynny przez długi czas. Co robisz, jeśli uważasz, że spowodowało to kilka nieprzyjemnych wycieków? Użyj heapdump i Chrome DevTools, aby porównać niektóre migawki i zobaczyć, co się zmienia.
Aby zapoznać się z przydatnymi artykułami, sprawdź
Jeśli masz ochotę obejrzeć film (y), to
Niezależnie od wybranej ścieżki, upewnij się, że rozumiesz, w jaki sposób debugujesz
źródło
Tezeusz jest projektem przez Adobe badań, które pozwala na debugowanie kodu node.js w ich edytor Open Source nawiasach . Ma kilka interesujących funkcji, takich jak pokrycie kodu w czasie rzeczywistym, kontrola wsteczna, asynchroniczne drzewo połączeń.
źródło
Narzędzia Node.js dla Visual Studio 2012 lub 2013 zawierają debugger. Przegląd tutaj stwierdza: „Narzędzia Node.js dla Visual Studio obejmują pełną obsługę debugowania aplikacji węzłów”. Będąc nowym użytkownikiem Node.js, ale mając doświadczenie w .NET, ten dodatek jest świetnym sposobem na debugowanie aplikacji Node.js.
źródło
Visual Studio Code ma naprawdę niezłą obsługę debugowania Node.js. Jest darmowy, open source i wieloplatformowy i działa w systemach Linux, OS X i Windows.
Możesz nawet debugować zadania chrząkania i przełykania , jeśli musisz ...
źródło
Napisałem inne podejście do debugowania kodu Node.js, który jest stabilny i niezwykle prosty. Jest dostępny na https://github.com/sa/iron-node .
Wieloplatformowy debugger wizualny typu open source.
Instalacja:
npm install iron-node -g;
Odpluskwić:
iron-node yourscript.js;
źródło
Jeśli używasz Atom IDE , możesz zainstalować
node-debugger
pakiet.źródło
Korzystanie z wersji Chrome 67.0.3396.62 (+)
Pojawi się kolejne okno DevTools, które pojawi się specjalnie do debugowania aplikacji węzła.
źródło
Stworzyłem małe schludne narzędzie o nazwie pry.js, które może ci pomóc.
Umieść prostą instrukcję gdzieś w kodzie, uruchom skrypt normalnie, a węzeł zatrzyma bieżący wątek, dając ci dostęp do wszystkich zmiennych i funkcji. Przeglądaj / edytuj / usuwaj je do woli!
źródło
W Node.js. jest wbudowany klient debuggera wiersza poleceń. Cloud 9 IDE ma również całkiem niezły (wizualny) debugger .
źródło
Program Visual Studio Code będzie dla nas działał podczas debugowania.
źródło
Złożyłem krótki starter do debugowania Node.js na temat korzystania z Inspektora węzłów dla tych, którzy nie są pewni, od czego zacząć.
źródło
Użyj Webstorm! Jest idealny do debugowania aplikacji Node.js. Ma wbudowany debugger. Sprawdź dokumenty tutaj: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
źródło
Rozpocznij proces węzła flagą --inspect .
node --inspect index.js
a następnie Otwórz
chrome://inspect
w chrome. Kliknij link „Otwórz dedykowane narzędzia DevTools dla węzła” lub zainstaluj to rozszerzenie chrome, aby łatwo otwierać chrome DevTools.Aby uzyskać więcej informacji, zapoznaj się z tym linkiem
źródło
Jeśli potrzebujesz potężnej biblioteki rejestrowania dla Node.js, Tracer https://github.com/baryon/tracer jest lepszym wyborem.
Wysyła komunikaty dziennika ze znacznikiem czasu, nazwą pliku, nazwą metody, numerem linii, ścieżką lub stosem wywołań, obsługuje konsolę kolorów i obsługuje bazę danych, pliki i transport strumieniowy. Jestem autorem
źródło
Zakładając, że masz zainstalowany na komputerze inspektor węzłów (jeśli nie, wpisz „npm install -g node-inspector”), po prostu musisz uruchomić:
I wklej URI z wiersza poleceń do przeglądarki WebKit (Chrome / Safari).
źródło
Dla kompletności:
Pycharm 3,0 + node.js Wtyczka oferuje niesamowite doświadczenie rozwoju + bieg + debugowania .
źródło
IntelliJ działa wspaniale dla Node.js.
Ponadto IntelliJ dobrze obsługuje „Code Assistance”.
źródło
Istnieje wiele możliwości ...
Obsługa debugowania jest często implementowana przy użyciu protokołu debugowania v8 lub nowszego protokołu debugowania Chrome .
źródło
Jest nowy projekt Nodeclipse typu open source (jako wtyczka Eclipse lub Enide Studio ):
Nodeclipse został numerem 1 w Top 10 nowych wtyczek Eclipse na rok 2013 . Korzysta ze zmodyfikowanego debugera V8 (z Google Chrome Developer Tools for Java).
Nodeclipse to darmowe oprogramowanie typu open source wydawane na początku każdego miesiąca .
źródło
NetBeans IDE miał node.js wsparcie od wersji 8.1 :
Dodatkowe referencje:
źródło
Użyj tych poleceń
źródło
ndb to ulepszone środowisko debugowania dla Node.js, włączane przez Chrome DevTools
https://github.com/GoogleChromeLabs/ndb
źródło
Szybkim i brudnym sposobem debugowania małych skryptów Node.js za pomocą ulubionego debugera przeglądarki byłoby użycie Browserify . Pamiętaj, że to podejście nie działa z żadnymi aplikacjami, które wymagają natywnych bibliotek we / wy, ale jest wystarczające dla większości małych skryptów.
Teraz przenieś wszystkie
var x = requires('x')
połączenia dorequires.js
pliku i uruchom:(Minusem tutaj jest to, że albo musisz przenieść lub skomentować
requires
we wszystkich swoich plikach.)Dołącz do
bundle.js
pliku HTML tak:Teraz załaduj plik do przeglądarki i naciśnij F12i viola: debuguj w przeglądarce.
źródło