Como depurar um aplicativo de servidor Node.js.
No momento, estou usando principalmente a depuração de alertas com instruções de impressão como esta:
sys.puts(sys.inspect(someVariable));
Deve haver uma maneira melhor de depurar. Eu sei que o Google Chrome tem um depurador de linha de comando. Este depurador também está disponível para o Node.js?
javascript
node.js
debugging
google-chrome-devtools
Fabian Jakobs
fonte
fonte
--inspect-brk
INSTEAD OF--inspect
se quiser depurar o código do servidor real no momento do carregamento. Veja stackoverflow.com/questions/59596138Respostas:
O inspetor de nó pode salvar o dia! Use-o em qualquer navegador que suporte o WebSocket . Pontos de interrupção, criação de perfil, codificação ao vivo, etc ... É realmente incrível.
Instale-o com:
Então corra:
fonte
Depuração
Criação de perfil
node --prof ./app.js
node --prof-process ./the-generated-log-file
Heapdumps
Flamegraphs
Rastreamento
Exploração madeireira
Bibliotecas que produzem informações de depuração
Bibliotecas que aprimoram as informações de rastreamento de pilha
avaliação comparativa
ab -n 100000 -c 1 http://127.0.0.1:9778/
De outros
Legado
Eles costumam funcionar, mas não são mais mantidos ou não são mais aplicáveis às versões modernas dos nós.
fonte
look
módulo, conforme apontado em stackoverflow.com/questions/12864221/nodejs-memory- criação de perfilnprof
+v8.log
denode --prof
.O depurador V8 lançado como parte das Ferramentas do desenvolvedor do Google Chrome pode ser usado para depurar scripts do Node.js. Uma explicação detalhada de como isso funciona pode ser encontrada no wiki do Node.js GitHub .
fonte
https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27#.fitvuaumt
Nó tem seu próprio construído em GUI depurador a partir da versão 6.3 (usando DevTools do Chrome)
Basta passar a bandeira do inspetor e você receberá um URL para o inspetor:
Você também pode quebrar na primeira linha passando em seu
--inspect-brk
lugar.fonte
O Node.js. versão 0.3.4+ possui suporte a depuração interno.
node debug script.js
Manual: http://nodejs.org/api/debugger.html
fonte
--debug
paradebug
sem os traços. Foi assim que finalmente consegui que funcionasse. É confuso--debug
edebug
faz duas coisas diferentes.app is already running...
", quando tento continuar e deparo com uma instrução que está tentando obter entrada, ela retorna ao prompt de depuração em vez de me deixar inserir a entrada necessária.O Código do Visual Studio será minha opção para depuração. Nenhuma sobrecarga de instalação de ferramentas ou
npm install
outras coisas. Basta definir o ponto de partida do seu aplicativo no package.json e o VSCode criará automaticamente um arquivo de configuração dentro da sua solução. ÉbaseadonoElectron, no qual editores como o Atom são criados.fonte
Eu pessoalmente uso o JetBrains WebStorm , pois é o único IDE JavaScript que eu achei excelente para JavaScript front-end e back-end.
Ele funciona em vários sistemas operacionais e possui a depuração do Node.js integrada (além de várias outras coisas) ( http://www.jetbrains.com/webstorm/features/index.html ).
Meus únicos itens de "problemas" / lista de desejos
estamosforam :Parece ter mais recursos no Mac do que no WindowsNão parece mais um problema na versão 6.Seria bom se ele tivesse suporte a Snippet (como os do Sublime Text 2 - ou seja, digite 'fun' e toque em 'tab' para inserir uma função.Veja o comentário @WickyNilliams abaixo - Com os Live Templates, você também tem suporte para snippets.fonte
Muitas ótimas respostas aqui, mas eu gostaria de adicionar minha visão (com base em como minha abordagem evoluiu)
Logs de depuração
Vamos ser sinceros, todos nós gostamos de algo bom
console.log('Uh oh, if you reached here, you better run.')
e, às vezes, que funciona muito bem, por isso, se você é reticente em se afastar demais, adicione pelo menos um pouco de brilho aos seus logs com a depuração do Visionmedia .Depuração interativa
Tão útil quanto o log do console pode ser, para depurar profissionalmente, você precisa arregaçar as mangas e ficar preso. Defina pontos de interrupção, percorra seu código, inspecione escopos e variáveis para ver o que está causando esse comportamento estranho. Como outros já mencionaram, o inspetor de nós é realmente o joelho das abelhas. Ele faz tudo o que você pode fazer com o depurador embutido, mas usando a interface familiar do Chrome DevTools. Se, como eu, você usa o Webstorm , aqui está um guia útil para depuração a partir daí.
Rastreios de pilha
Por padrão, não podemos rastrear uma série de operações em diferentes ciclos do loop de eventos (ticks). Para contornar isso, dê uma olhada em longjohn (mas não em produção!).
Perdas de memória
Com o Node.js, podemos esperar que um processo do servidor permaneça ativo por um tempo considerável. O que você faz se acha que houve alguns vazamentos desagradáveis? Use heapdump e o Chrome DevTools para comparar alguns instantâneos e ver o que está mudando.
Para alguns artigos úteis, confira
Se você quiser assistir a um vídeo, então
Seja qual for o caminho escolhido, certifique-se de entender como você está depurando
fonte
Theseus é um projeto da pesquisa da Adobe que permite depurar o código Node.js. nos suportes do editor de código-fonte aberto . Possui alguns recursos interessantes, como cobertura de código em tempo real, inspeção retroativa e árvore de chamadas assíncronas.
fonte
As ferramentas do Node.js. para o Visual Studio 2012 ou 2013 incluem um depurador. A visão geral aqui afirma "As ferramentas do Node.js. para o Visual Studio incluem suporte completo para aplicativos de nó de depuração". Sendo novo no Node.js, mas com experiência em .NET, achei esse complemento uma ótima maneira de depurar aplicativos Node.js.
fonte
O Visual Studio Code tem um suporte de depuração muito bom para o Node.js. É gratuito, de código aberto e multiplataforma e roda em Linux, OS X e Windows.
Você pode até depurar tarefas grunt e gulp , caso precise ...
fonte
Eu escrevi uma abordagem diferente para depurar o código Node.js, que é estável e extremamente simples. Está disponível em https://github.com/sa/iron-node .
Um depurador visual de plataforma cruzada de código-fonte aberto.
Instalação:
npm install iron-node -g;
Depurar:
iron-node yourscript.js;
fonte
Se você estiver usando o Atom IDE , poderá instalar o
node-debugger
pacote.fonte
Usando a versão 67.0.3396.62 do Chrome (+)
Haverá outra janela do DevTools que será exibida especificamente para o aplicativo do nó de depuração.
fonte
Criei uma pequena ferramenta interessante chamada pry.js que pode ajudá-lo.
Coloque uma declaração simples em algum lugar do seu código, execute seu script normalmente e o node interromperá o encadeamento atual, fornecendo acesso a todas as suas variáveis e funções. Veja / edite / apague-os à vontade!
fonte
Há um cliente depurador de linha de comando interno no Node.js. O IDE do Cloud 9 também possui um depurador (visual) bastante agradável .
fonte
O Código do Visual Studio funcionará para nós na depuração.
fonte
Eu montei um pequeno iniciador de depuração do Node.js. usando o inspetor de nós para aqueles que não sabem ao certo por onde começar.
fonte
Use Webstorm! É perfeito para depurar aplicativos Node.js. Ele possui um depurador embutido. Confira os documentos aqui: https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html
fonte
Inicie o processo do nó com o sinalizador --inspect .
node --inspect index.js
e depois abra
chrome://inspect
no chrome. Clique no link "Abrir DevTools dedicado para Nó" ou instale este extensão do Chrome para abrir facilmente o DevTools do Chrome.Para mais informações, consulte este link
fonte
Se você precisar de uma biblioteca de log poderosa para o Node.js, o Tracer https://github.com/baryon/tracer é a melhor opção.
Ele gera mensagens de registro com registro de data e hora, nome do arquivo, nome do método, número da linha, caminho ou pilha de chamadas, suporta console de cores e suporta banco de dados, arquivo e transporte de fluxo com facilidade. Eu sou o autor.
fonte
Supondo que você tenha o node-inspector instalado no seu computador (caso contrário, digite 'npm install -g node-inspector'), basta executar:
E cole o URI da linha de comando em um navegador WebKit (Chrome / Safari).
fonte
Apenas para completar:
O plugin PyCharm 3.0 + Node.js oferece uma experiência incrível de desenvolvimento, execução e depuração .
fonte
O IntelliJ funciona maravilhosamente para o Node.js.
Além disso, o IntelliJ suporta bem o 'Code Assistance'.
fonte
Existem muitas possibilidades ...
O suporte à depuração geralmente é implementado usando o v8 Debugging Protocol ou o Chrome Debugging Protocol mais recente .
fonte
Há o novo projeto Nodeclipse de código aberto (como um plug-in do Eclipse ou Enide Studio ):
O Nodeclipse tornou-se o número 1 nos 10 novos plug-ins do Eclipse para 2013 . Ele usa um V8 modificado depurador (do Google Chrome Developer Tools para Java).
O Nodeclipse é um software de código aberto gratuito lançado no início de cada mês .
fonte
O NetBeans IDE possui suporte ao Node.js. desde a versão 8.1 :
Referências adicionais:
fonte
Use estes comandos
fonte
O ndb é uma experiência aprimorada de depuração para o Node.js, habilitada pelo Chrome DevTools
https://github.com/GoogleChromeLabs/ndb
fonte
Uma maneira rápida e suja de depurar pequenos scripts do Node.j com o depurador de navegador favorito seria usar o browserify . Observe que essa abordagem não funciona com aplicativos que exijam bibliotecas de E / S nativas, mas é boa o suficiente para a maioria dos scripts pequenos.
Agora mova todas as suas
var x = requires('x')
chamadas para umrequires.js
arquivo e execute:(A desvantagem aqui é que você deve mover ou comentar
requires
em todos os seus arquivos.)Inclua o
bundle.js
em um arquivo HTML da seguinte forma:Agora carregue o arquivo no seu navegador e pressione F12e viola: debug no navegador.
fonte