Como desenvolvedor Node.js, você provavelmente já se deparou com a frustração de rastrear bugs indescritíveis em seus aplicativos. A depuração é uma habilidade essencial que pode economizar horas de trabalho e ajudá-lo a escrever um código mais robusto. Nesta postagem, exploraremos algumas técnicas e ferramentas poderosas para depuração de aplicativos Node.js.
Vamos começar com a ferramenta de depuração mais básica, mas muitas vezes subestimada: console.log(). Embora possa parecer primitivo, o uso estratégico de console.log() pode ser surpreendentemente eficaz.
function calculateTotal(items) { console.log('Items received:', items); let total = 0; for (let item of items) { console.log('Processing item:', item); total = item.price; } console.log('Total calculated:', total); return total; }
Dica profissional: use console.table() para uma visão mais estruturada de arrays e objetos:
console.table(items);
Node.js vem com um depurador integrado que você pode usar executando seu script com o sinalizador de inspeção:
node inspect app.js
Você pode então usar comandos como cont, next, step e watch para navegar pelo seu código. Embora poderoso, esse método pode ser um pouco complicado para aplicativos complexos.
O VS Code oferece excelentes recursos de depuração para Node.js. Veja como configurá-lo:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Debug Node.js Program", "program": "${workspaceFolder}/app.js" } ] }
Agora você pode definir pontos de interrupção em seu código e começar a depurar com F5.
Você pode usar o Chrome DevTools para depurar aplicativos Node.js:
node --inspect app.js
Este método dá acesso a todo o poder das ferramentas de depuração do Chrome.
O módulo de depuração permite adicionar saída de depuração seletiva ao seu aplicativo:
const debug = require('debug')('myapp:server'); debug('Server starting on port 3000');
Para ativar esses logs, defina a variável de ambiente DEBUG:
DEBUG=myapp:server node app.js
O tratamento adequado de erros pode economizar muito tempo de depuração:
process.on('unhandledRejection', (reason, promise) => { console.log('Unhandled Rejection at:', promise, 'reason:', reason); // Application specific logging, throwing an error, or other logic here });
Usar async/await pode tornar seu código assíncrono mais fácil de depurar:
async function fetchData() { try { const response = await fetch('https://api.example.com/data'); const data = await response.json(); console.log('Data received:', data); return data; } catch (error) { console.error('Error fetching data:', error); } }
Para depuração de desempenho, use o criador de perfil integrado:
node --prof app.js
Isso gera um arquivo de log que você pode analisar com:
node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt
Se você suspeitar de um vazamento de memória, você pode usar o módulo heapdump:
const heapdump = require('heapdump'); // Somewhere in your code heapdump.writeSnapshot((err, filename) => { console.log('Heap dump written to', filename); });
Você pode então analisar o heap dump usando o Chrome DevTools.
A depuração é tanto uma arte quanto uma ciência. Essas ferramentas e técnicas devem fornecer uma base sólida para lidar até mesmo com os bugs mais complicados em seus aplicativos Node.js. Lembre-se de que a chave para uma depuração eficaz geralmente é uma combinação das ferramentas certas, uma abordagem sistemática e, às vezes, um novo par de olhos.
Quais são suas técnicas de depuração preferidas para Node.js? Compartilhe suas dicas e experiências nos comentários abaixo!
Boa depuração!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3