[POST-IT] Depuração e NodeJS
Inspirado pelo surma.dev estou iniciando essa nova categoria de posts. Posts do tipo
post-it
são mais uma documentação até para eu mesmo lembrar de certas coisas. Você pode esperar desses posts algum tipo
de insight, mas não uma estrutura completa presente em um post convencional.
Chrome inspector
O que mais tenho utilizado como debugger é o Chrome Web Tools. É uma ferramenta ligeiramente mais complexa do que o debugger do nodejs, aquele que você consegue executar no terminal.
Sobretudo em projetos nos quais me sinto perdido, ter um call stack me ajuda muito quando preciso me situar. Debugar aplicações NodeJS com o Chrome Web Tools é bem simples.
Basta executar sua aplicação/script com --inspect
. Exemplo:
node --inspect app.js
Geralmente trabalho em aplicações web e uso --inspect
no comando pra startar o servidor. Isso vai iniciar o debugger
que você pode acessar no seu browser Chromium-based. Basta acessar chrome:inspect
.
Clicando em inspect
a ferramenta de web dev tools vai abrir pronta
para debug da sua aplicação.
Debug das requisições HTTP
Uma outra coisa legal, e que precisei recentemente, é o debug de requisições feitas pelo NodeJS em si. Eu estava trabalhando em uma aplicação que envolvia uns wrappers de chamadas a APIs, onde eu definia somente as configurações de chamada.
Alguns erros na requisição aconteceram e eu queria entender o que estava havendo. Até que esbarrei com esse jeito aqui de debuggar requisições no NodeJS.
De modo geral a variável de ambiente NODE_DEBUG
permite definir uma lista de módulos que queremos debugar. Para o meu
caso estava interessado nas requisições, assim fiz:
NODE_DEBUG=http,http2 node script.js
Isso funciona também com npm
, exemplo:
NODE_DEBUG=http,http2 npm start
O resultado vai ser algo mais ou menos como o que é mostrado abaixo
Assim você pode examinar a requeste, seu payload, o retorno etc. Mesmo que o seu código não seja o originador da requisição.