Como faço para depurar aplicativos Node.js?
-
19-09-2019 - |
Pergunta
Como faço para depurar um aplicativo de servidor Node.js?
Agora eu estou na sua maioria usando alerta de depuração com instruções de impressão como este:
sys.puts(sys.inspect(someVariable));
Deve haver uma maneira melhor de depuração. Eu sei que Google Chrome tem um depurador de linha de comando. É este o depurador disponível para Node.js também?
Solução 3
O V8 depurador lançado como parte do Google Ferramentas para desenvolvedores Chrome pode ser usado para depurar scripts do Node.js. A explicação detalhada de como funciona este pode ser encontrada no Node js GitHub wiki .
Outras dicas
nó-inspetor poderia salvar o dia! Usá-lo a partir de qualquer browser que suporte WebSocket . Pontos de interrupção, profiler, livecoding, etc ... É realmente incrível.
Instale-o com:
npm install -g node-inspector
Em seguida, execute:
node-debug app.js
Depuração
Profiling
-
node --prof ./app.js
-
node --prof-process ./the-generated-log-file
Heapdumps
Flamegraphs
- 0x
- JAM3 / DevTool em seguida, Chrome Charts Developer Tools Chama
- Dtrace e StackVis - Só suportado em SmartOS
- clinicjs
Tracing
Registro
As bibliotecas que informações de depuração de saída
Libraries que melhoram informações rastreamento de pilha
Aferição
- Apache Bench :
ab -n 100000 -c 1 http://127.0.0.1:9778/
- wrk
Outros
Legado
Estas usar para trabalhar, mas já não são mantidos ou não aplicável a versões modernas do nó.
- https://github.com/bnoordhuis/node-profiler - substituído por incorporado na depuração
- https://github.com/c4milo/node-webkit-agent - substituído pelo inspetor nó
- https://nodetime.com/ - extinta ??li>
nó tem seu próprio rel="noreferrer"> a partir da versão 6.3 (usando DevTools do Chrome )
Simplesmente passar o sinalizador inspector e você será fornecido com uma URL para o inspector:
node --inspect server.js
Você também pode quebrar na primeira linha, passando --inspect-brk
vez.
Para abrir uma janela Chrome automaticamente, use o href="https://github.com/jaridmargolin/inspect-process" rel="noreferrer"> módulo
# install inspect-process globally
npm install -g inspect-process
# start the debugger with inspect
inspect script.js
Node.js versão 0.3.4+ foi construído com suporte a depuração.
node debug script.js
Visual Código Estúdio será a minha escolha para depuração. Sem sobrecarga de instalar quaisquer ferramentas ou material npm install
.
Basta definir o ponto de seu aplicativo no package.json começando e VSCode criará automaticamente um arquivo de configuração dentro de sua solução. Ele foi construido sob Electron , em que editores como Atom são construídas.
Código VS dá experiência de depuração semelhante ao que você pode ter tinha em outros IDEs como VS, Eclipse, etc.
Eu pessoalmente uso JetBrains WebStorm como é a única JavaScript IDE que eu encontrei o que é ótimo tanto para frontend e backend JavaScript.
Ele funciona em vários sistemas operacionais e tem Node.js depuração built-in (bem como uma tonelada de outras coisas] ( http://www.jetbrains.com/webstorm/features/index.html ).
As minhas apenas 'problemas' / item na lista são foram :
-
Parece ser mais recurso com fome no Mac do que o WindowsJá não parece um problema na versão 6. -
Seria bom se tivesse o apoio de trechos (como os de Sublime Text 2 - ou seja, tipo 'diversão' e toque 'guia' para colocar em uma funçãoVer @WickyNilliams comentário abaixo -.. com o Live Templates você também tem trecho de suporte
Um monte de grandes respostas aqui, mas eu gostaria de adicionar o meu ponto de vista (com base em como a minha abordagem evoluiu)
Debug Logs
Vamos enfrentá-lo, que todos nós amamos uma boa console.log('Uh oh, if you reached here, you better run.')
e às vezes isso funciona muito bem, então se você está reticente a se mover muito longe de pelo menos adicionar alguns bling a seus registros com o Visionmedia depuração .
Interativo depuração
Como calhar como o registro do console pode ser, para depurar profissionalmente você precisa arregaçar as mangas e entrar em preso. Pontos de interrupção definidos, passo através de seu código, inspecionar escopos e variáveis ??para ver o que está causando esse comportamento estranho. Como já foi mencionado, nó-inspetor é realmente as abelhas-joelhos. Ele faz tudo o que você pode fazer com o que o familiar interface do Chrome DevTools built-in depurador, mas usando. Se, como eu, você usa WebStorm , em seguida, aqui é um guia prático para a depuração de lá.
Stack Traces
Por padrão, não podemos traçar uma série de operações em diferentes ciclos do ciclo de eventos (carrapatos). Para contornar esta situação tem uma olhada Longjohn (mas não na produção!).
vazamentos de memória
Com Node.js podemos ter um processo de servidor deverá ficar-se de um tempo considerável. O que você faz se você acha que tem surgido alguns vazamentos desagradáveis? Use heapdump e DevTools Chrome para comparar alguns instantâneos e ver o que está mudando.
Para alguns artigos úteis, veja
Se você sentir vontade de assistir a um vídeo (s), então
- Netflix JS Talks - Depuração Node.js em Produção
- Interessante vídeo de grupo rastreamento trabalhando em rastreamento e depuração node.js
- Realmente informativo vídeo de 15 minutos no nó-inspetor
Seja qual for o caminho que você escolher, apenas certifique-se entender como você está depurando
É uma coisa dolorosa
Olhar para o seu próprio problema e saber
Que você mesmo e mais ninguém tornouSófocles, Ajax
Node.js Tools para Visual Studio 2012 ou 2013 inclui um depurador. A visão geral estados aqui "Ferramentas Node.js para Visual Studio inclui suporte completo para depurar aplicativos de nós.". Sendo novo para Node.js, mas com experiência em .NET, eu encontrei este add-in para ser uma ótima maneira de aplicações Node.js depuração.
Visual Código Estúdio tem muito bom suporte a depuração Node.js. É gratuito, de código aberto e multi-plataforma e roda em Linux, OS X e Windows.
Você pode até mesmo tarefas de depuração grunhido e gole , se você precisar ...
Eu escrevi uma abordagem diferente para depuração de código Node.js que é estável e é extremamente simples. Ele está disponível em https://github.com/sa/iron-node .
Uma opensource cross-platform depurador visual.
Instalação:
npm install iron-node -g;
Debug:
iron-node yourscript.js;
Se você estiver usando o href="https://atom.io/packages/node-debugger" rel="noreferrer"> Atom IDE , você pode instalar o pacote node-debugger
Usando o Chrome versão 67.0.3396.62 (+)
- Executar nó aplicativo
nó --inspect-BRK = 0.0.0.0: 9229 server.js (servidor js filename)
- Procure a sua aplicação em cromo por exemplo "Localhost: porta"
- DevTools Abertas.
- Clique no ícone o nó ao lado do ícone do dispositivo de resposta.
Haverá outra janela DevTools que vai sair especificamente para depuração de aplicativo nó.
Eu criei uma ferramenta pequena pura chamada pry.js que podem ajudá-lo.
Coloque um simples em algum lugar declaração no seu código, executar o script normalmente e nó irá parar a thread atual dando-lhe acesso a todas as suas variáveis ??e funções. Ver / editar / apagar-los à vontade!
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()
Não é built-in de linha de comando depurador cliente dentro Node.js. Cloud 9 IDE têm também bastante agradável (visual) depurador .
Visual Código Estúdio trabalho vontade para nós na depuração.
Eu coloquei um short Node.js depuração cartilha sobre como usar o < a href = "https://github.com/node-inspector/node-inspector" rel = "nofollow noreferrer"> nó-inspector para aqueles que não tem certeza por onde começar.
Use WebStorm! É perfeito para depurar aplicações Node.js. Tem um built-in depurador. Confira os docs aqui: https: // www .jetbrains.com / help / WebStorm / 2016,1 / corrida-e-depuração-node-js.html
Se você precisar de uma biblioteca logging poderosa para Node.js, Tracer https://github.com/baryon/tracer é uma escolha melhor.
Ele produz mensagens de log com um timestamp, nome do arquivo, nome do método, número da linha, caminho ou chamada pilha, consola de cor suporte e banco de dados de suporte, arquivo, transporte fluxo facilmente. Eu sou o autor.
Supondo que você tenha nó-inspetor instalado no seu computador (se não, basta digitar 'npm instalar -g nó-inspector'), você só tem que executar:
node-inspector & node --debug-brk scriptFileName.js
E colar o URI a partir da linha de comando em uma WebKit (Chrome / Safari) browser.
Apenas para ser completo:
O PyCharm 3.0 + Node.js Plug-in oferece uma incrível desenvolvimento + prazo + depuração experiência .
Existem muitas possibilidades ...
- nó inclui um depuração utilitário
- nó-inspetor
- editores de código / IDEs (veja as instruções de depuração para um dos seguintes)
Suporte Debug é frequentemente implementada usando o href="https://github.com/v8/v8/wiki/Debugging-Protocol" rel="noreferrer"> v8 Protocolo ou o mais recente < a href = "https://developer.chrome.com/devtools/docs/debugger-protocol" rel = "noreferrer"> Chrome depuração Protocolo .
Há o novo código-fonte aberto Nodeclipse projeto (como um plugin do Eclipse ou Enide Estúdio ):
Nodeclipse se tornou # 1 em Eclipse Top 10 novos plugins para 2013 . Ele usa um V8 depurador modificado (a partir do Google Chrome Developer Tools para Java).
Nodeclipse é um software livre de código aberto lançado no início de cada mês .
IntelliJ funciona maravilhosamente para Node.js.
Além disso, 'Código de Assistência' IntelliJ suportes bem.
O apoio Node.js NetBeans IDE teve desde versão 8.1 :
<...>
Novos Destaques dos recursos
Node.js Desenvolvimento de Aplicações
- Novo Projeto Node.js assistente
- New Node.js Expresso assistente
- avançado JavaScript Editor
- O novo suporte para a execução de aplicativos Node.js
- O novo suporte para depuração de aplicativos Node.js.
<...>
Referências adicionais:
Use este comandos
DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
Uma maneira rápida e suja para depurar scripts pequenos Node.js com o seu favorito navegador depurador seria a utilização de browserify . Note-se que esta abordagem não funciona com todas as aplicações que exigem bibliotecas de I / O nativas, mas é bom o suficiente para a maioria das pequenas scripts.
$ npm install -g browserify
Agora, mova todas as chamadas de seu var x = requires('x')
em um arquivo requires.js
e execute:
$ browserify requires.js -s window -o bundle.js
(A desvantagem aqui é que você tem que mover ou comentar o requires
em todos os seus arquivos.)
Inclua o bundle.js
em um arquivo HTML assim:
<script type="text/javascript" src="bundle.js"></script>
Agora carregar o arquivo no seu navegador e pressione F12 e viola:. Depuração no navegador
NDB é uma experiência de depuração melhorado para Node.js, habilitado pelo Chrome DevTools