Jak debugować węzeł.aplikacje js?

Jak debugować węzeł.aplikacja js server?

W tej chwili używam głównie debugowania alertów z instrukcjami print takimi jak:

sys.puts(sys.inspect(someVariable));

Musi być lepszy sposób na debugowanie. Wiem, że Google Chrome ma debugger wiersza poleceń. Czy ten debugger jest dostępny dla Node.js też?

Author: Peter Mortensen, 2009-12-16

30 answers

Node-inspector może uratować sytuację! Użyj go z dowolnej przeglądarki obsługującej WebSocket . Punkty przerwania, profiler, livecoding itp... To jest naprawdę niesamowite.

Zainstaluj za pomocą:

npm install -g node-inspector

Następnie uruchom:

node-debug app.js
 1196
Author: daralthus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-13 15:23:04

Debugowanie

Profilowanie

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

Heapdumps

Flamegraphs

Śledzenie

Logowanie

Biblioteki, które wypisują informacje debugujące

Biblioteki poprawiające śledzenie stosu informacje

Benchmarking

Inne

Dziedzictwo

Są używane do pracy, ale nie są już utrzymywane lub nie mają zastosowania do nowoczesnego węzła wersje.

 679
Author: balupton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-13 22:18:43

Debuger V8 wydany jako część Google Chrome Developer Tools może być używany do debugowania węzła.Skrypty js. Szczegółowe wyjaśnienie tego, jak to działa, można znaleźć w węźle .js GitHub wiki .

 213
Author: Fabian Jakobs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-31 13:27:29

Node ma swój własnywbudowany debugger graficzny od wersji 6.3 (przy użyciu DevTools Chrome)

Węzły wbudowany debugger GUI

Po prostu podaj flagę inspektora, a otrzymasz adres URL do inspektora:

node --inspect server.js

Możesz również złamać pierwszą linię, przechodząc --inspect-brk.

Aby otworzyć okno Chrome automatycznie, użyj modułu inspect-process .

# install inspect-process globally
npm install -g inspect-process

# start the debugger with inspect
inspect script.js
 155
Author: Alister Norris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-24 09:46:49

Węzeł.js wersja 0.3.4 + ma wbudowaną obsługę debugowania.

node debug script.js

Instrukcja: http://nodejs.org/api/debugger.html

 85
Author: JulianW,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-21 16:56:03

Visual Studio Code będzie moim wyborem do debugowania. Nie musisz instalować żadnych narzędzi ani npm install rzeczy. Wystarczy ustawić punkt początkowy aplikacji w pakiecie.json i VSCode automatycznie utworzą plik konfiguracyjny w Twoim rozwiązaniu. Zbudowany jest na Elektronie , na którym zbudowany jest Atom.

VS Code daje podobne doświadczenie debugowania, jakie możesz mieć miał w innych Idach jak VS, Eclipse, itd.

Tutaj wpisz opis obrazka Tutaj wpisz opis obrazka

 54
Author: Shreyas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-25 15:03:40

Osobiście używam JetBrains WebStorm ponieważ jest to jedyne IDE JavaScript, które znalazłem, które jest świetne zarówno dla frontend i Backend JavaScript.

Działa na wielu systemach operacyjnych i ma węzeł.wbudowane debugowanie js (jak również mnóstwo innych rzeczy] (http://www.jetbrains.com/webstorm/features/index.html).

Moje jedyne "problemy" /elementy listy życzeń to byli :

  1. [[9]}wydaje się być bardziej zasobożerny na Macu niż Windows to nie dłuższa wydaje się problemem w wersji 6.
  2. byłoby miło, gdyby miał wsparcie dla Snippet (jak te z Sublime Text 2 - tzn. wpisz " fun "i naciśnij "tab", aby umieścić funkcję. Zobacz komentarz @WickyNilliams poniżej - z Live Templates masz również wsparcie dla snippet.
 52
Author: isNaN1247,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-12 20:26:03

Theseus to projekt firmy Adobe research, który pozwala debugować węzeł.kod js w edytorze Open Source . Ma kilka ciekawych funkcji, takich jak pokrycie kodu w czasie rzeczywistym, kontrola wsteczna, asynchroniczne drzewo wywołań.

zrzut ekranu

 36
Author: Sindre Sorhus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-19 00:11:11

Wiele świetnych odpowiedzi tutaj, ale chciałbym dodać mój pogląd (w oparciu o to, jak moje podejście ewoluowało)

Debug Logs

Spójrzmy prawdzie w oczy, wszyscy kochamy dobry console.log('Uh oh, if you reached here, you better run.') i czasami działa to świetnie, więc jeśli jesteś powściągliwy, aby przenieść się zbyt daleko od niego, dodaj chociaż trochę błyskotliwości do swoich dzienników za pomocą debugowania visionmedia za pomocą debugowania.

Debugowanie Interaktywne

Jak przydatne może być rejestrowanie konsoli, aby profesjonalnie debugować, musisz zakasać rękawy i utknąć. Set punkty przerwania, przejrzyj kod, Sprawdź zakresy i zmienne, aby zobaczyć, co powoduje to dziwne zachowanie. Jak już inni wspomnieli, node-inspector to naprawdę pszczoły-kolana. Robi wszystko, co możesz zrobić za pomocą wbudowanego debugera, ale używając znanego interfejsu Chrome DevTools. Jeśli, podobnie jak ja, używasz Webstorm, to tutaj jest przydatny przewodnik po debugowaniu stamtąd.

Ślady Stosu

Domyślnie nie możemy prześledzić serii operacji różne cykle pętli zdarzeń (kleszcze). Aby to obejść, spójrz na longjohn (ale nie w produkcji!).

Wycieki Pamięci

Z Węzłem.js możemy mieć proces serwera, który będzie działał przez dłuższy czas. Co zrobić, jeśli myślisz, że to spowodowało jakieś paskudne przecieki? Użyj heapdump i Chrome DevTools, aby porównać niektóre migawki i zobaczyć, co się zmienia.


Aby znaleźć przydatne artykuły, sprawdź

Jeśli masz ochotę obejrzeć film(y) to

Jakąkolwiek drogę wybierzesz, po prostu bądź na pewno rozumiesz jak debugujesz

Tutaj wpisz opis obrazka

To bolesna rzecz
To look at your own trouble and know
Że ty sam i nikt inny tego nie zrobił

Sofokles, Ajax

 32
Author: Philip O'Brien,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-08 10:28:05

Węzeł.js Tools dla Visual Studio 2012 lub 2013 zawiera debugger. Przegląd Tutaj stwierdza " węzeł.js Tools dla Visual Studio zawiera pełną obsługę debugowania aplikacji węzła.". Bycie nowym W Node.js, ale mając tło w. NET, znalazłem ten dodatek jako świetny sposób na debugowanie węzła.aplikacje js.

 21
Author: John81,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-12 20:33:53

Visual Studio Code ma naprawdę ładny węzeł.obsługa debugowania js. Jest darmowy, open source i cross-platform i działa na Linuksie, OS X i Windows.

Możesz nawet debugować zadania grunt i gulp , jeśli zajdzie taka potrzeba...

 19
Author: hans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 10:41:57

Napisałem inne podejście do węzła debugowania.kod js, który jest stabilny i jest niezwykle prosty. Jest on dostępny pod adresem https://github.com/s-a/iron-node .

Tutaj wpisz opis obrazka

Opensource cross-platform Visual debugger.

Instalacja:

npm install iron-node -g;

Debugowanie:

iron-node yourscript.js;

 19
Author: Stephan Ahlf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-08 15:04:45

Jeśli używasz atomu IDE , możesz zainstalować pakiet node-debugger.

 12
Author: Uchiha Itachi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 10:37:11

Stworzyłem małe, zgrabne narzędzie o nazwie pry.js {[3] } może Ci pomóc.

Umieść proste polecenie gdzieś w kodzie, uruchom skrypt normalnie, a node zatrzyma bieżący wątek dając Ci dostęp do wszystkich zmiennych i funkcji. Przeglądaj/edytuj/usuń je do woli!

pry = require('pryjs')

class FizzBuzz

  run: ->
    for i in [1..100]
      output = ''
      eval(pry.it) # magic
      output += "Fizz" if i % 3 is 0
      output += "Buzz" if i % 5 is 0
      console.log output || i

  bar: ->
    10

fizz = new FizzBuzz()
fizz.run()
 8
Author: BlaineSch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-26 00:51:12

Wewnątrz węzła znajduje się wbudowany klient debuggera .js. Cloud 9 IDE ma również całkiem ładny (wizualny) debugger .

 8
Author: yojimbo87,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-04 02:25:06

Visual Studio Code będzie działać dla nas w debugowaniu.

 8
Author: Surendra Parchuru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-15 10:02:20

Ułożyłem krótki węzeł.js debugging primer on using the node-inspector dla tych, którzy nie są pewni, od czego zacząć.

 7
Author: Josh Habdas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-21 18:31:17

Rozpocznij proces węzła z flagą --inspect.

node --inspect index.js

A następnie otwórz chrome://inspect w chrome. Kliknij łącze "Open dedicated DevTools for Node" lub zainstaluj to rozszerzenie chrome, aby łatwo otworzyć chrome DevTools.

Aby uzyskać więcej informacji, zapoznaj się z Ten link

 6
Author: Rahul Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-09 19:05:32

Jeśli potrzebujesz potężnej biblioteki logowania dla węzła.JS, Tracer https://github.com/baryon/tracer to lepszy wybór.

Wysyła komunikaty dziennika z znacznikiem czasu, nazwą pliku, nazwą metody, numerem linii, ścieżką lub stosem wywołań, konsolą kolorów wsparcia i obsługą bazy danych, pliku, transportu strumienia łatwo. Jestem autorem.

 5
Author: Baryon Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-12 19:29:41

Zakładając, że na twoim komputerze jest zainstalowany node-inspector (jeśli nie, wpisz 'npm install-g node-inspector'), musisz po prostu uruchomić:

node-inspector & node --debug-brk scriptFileName.js

I wklej URI z wiersza poleceń do przeglądarki WebKit (Chrome / Safari).

 5
Author: Shaheen Ghiassy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-12 20:28:14
 5
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 10:35:23

Użyj Webstorm! Jest idealny do debugowania węzła.aplikacje js. Posiada wbudowany debugger. Sprawdź dokumenty tutaj: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html

 5
Author: OneMoreQuestion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 19:13:43

Jest nowy projekt open-source nodeclipse (jako wtyczka Eclipse lub Enide Studio):

Http://www.nodeclipse.org/img/Nodeclipse-1-debugging.png

Nodeclipse stał się #1 w Eclipse Top 10 nowych wtyczek dla 2013. Używa zmodyfikowanego debugera V8 (z Google Chrome Developer Tools for Java).

Nodeclipse jest wolnym oprogramowaniem open-source wydawanym na początku każdego miesiąca .

 4
Author: Paul Verest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 10:34:04

Using Chrome Version 67.0.3396.62 (+)

  1. Uruchom aplikację węzła

Node --inspect-brk = 0.0.0.0: 9229 server.js (server js filename)

    [[3]} przeglądanie aplikacji w chrome, np. "localhost: port"
  1. Otwórz DevTools.
  2. Kliknij ikonę węzła obok ikony urządzenia reagującego.

Tutaj wpisz opis obrazka

Pojawi się kolejne okno DevTools, które pojawi się specjalnie dla węzła debugowania app.

Tutaj wpisz opis obrazka

 4
Author: babidi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-22 10:54:55

IntelliJ działa wspaniale dla Node.js.

Ponadto IntelliJ dobrze obsługuje 'Code Assistance'.

 3
Author: 卢声远 Shengyuan Lu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-05 03:34:42

Istnieje wiele możliwości...

Obsługa debugowania jest często zaimplementowana przy użyciu V8 Debugging Protocol lub nowszego Chrome Debugging Protokół .

 3
Author: cmd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-21 14:19:13

Szybki i brudny sposób debugowania małych węzłów.Skrypty js z ulubionym debugerem przeglądarkibędą używać browserify. Zauważ, że to podejście nie działa z żadnymi aplikacjami, które wymagają natywnych bibliotek We / Wy, ale jest wystarczająco dobre dla większości małych skryptów.

$ npm install -g browserify

Teraz Przenieś wszystkie wywołania var x = requires('x') do pliku requires.js i uruchom:

$ browserify requires.js -s window -o bundle.js

(minusem jest to, że musisz przenieść lub skomentować requires we wszystkich swoich plikach.)

Include the bundle.js w pliku HTML jak tak:

<script type="text/javascript" src="bundle.js"></script>

Teraz Załaduj plik w przeglądarce i naciśnij F12 i viola: debug w przeglądarce.

 2
Author: Gerold Meisinger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 10:39:23

The NetBeans IDE has had Node.obsługa js od wersji 8.1:

<...>

New Feature Highlights

Węzeł.Tworzenie aplikacji js

  • Nowy Węzeł.js Project wizard
  • Nowy Węzeł.js Express wizard
  • Enhanced JavaScript Editor
  • Nowe wsparcie dla uruchomionego węzła.aplikacje js
  • Nowe wsparcie dla węzła debugowania.aplikacje js.

<...>

Dodatkowe referencje:

  1. NetBeans Wiki / NewAndNoteworthyNB81 .
  2. węzeł.aplikacja js Express W NetBeans IDE, Geertjan-Oracle .
 2
Author: Sergey Brunov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 10:47:06
node-debug -p 8888 scriptFileName.js
 1
Author: matt burns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-07 15:53:27

Użyłbym GOOD by Walmart Labs. To da radę i jest bardzo elastyczny:

var hapi = require('hapi');
var good = require('good');
var server = hapi.createServer('localhost', 5000,{});
server.route({SOME ROUTE HERE});
server.start();

var options = {
subscribers: {
    'console':               ['ops', 'request', 'log', 'error'],
    'http://localhost/logs': ['log']
    }
};
server.pack.require('good', options, function (err) {

    if (!err) {
        console.log('Plugin loaded successfully');
    }
});
 1
Author: Doron Segal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 10:36:08