console.log('Basic debug:', variable);
console.dir(object, { depth: null, colors: true });
console.trace('Trace call stack');
Когда использовать:
Плюсы: Простота, не требует дополнительных инструментов
Минусы: Загрязнение кода, необходимость ручной очистки
node inspect server.js
или с chrome devtools:
node --inspect server.js
Когда использовать:
Плюсы: Полноценный debugger, точки останова
Минусы: Требует остановки приложения
const logger = require('winston');
logger.error('Error occurred', { error, metadata });
Когда использовать:
Плюсы: Структурированные логи, ротация
Минусы: Настройка форматов, хранилища
node --prof server.js
node --cpu-prof server.js
Инструменты:
Когда использовать:
require('newrelic');
// Автоматическое отслеживание
Когда использовать:
test('should handle error', async () => {
await expect(problematicFunction()).rejects.toThrow();
});
Когда использовать:
async function problematic() {
await step1();
debugger; // Сработает в асинхронном контексте
await step2();
}
const { Worker, isMainThread } = require('worker_threads');
if (isMainThread) {
new Worker(__filename, {
workerData: { debugPort: 9229 }
});
} else {
debugger; // Отладка воркера
}
node --inspect --trace-gc server.js
VS Code:
WebStorm:
for (let i = 0; i < data.length; i++) {
if (data[i].error) debugger; // Только при ошибках
}
const util = require('util');
function debugInspect(obj) {
return util.inspect(obj, { depth: null, colors: true });
}
const { v4: uuidv4 } = require('uuid');
const correlationId = uuidv4();
// Передавать между микросервисами
Выбор метода зависит от: