Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Отладка

Отладка — поиск причины, по которой программа ведёт себя не так, как задумано. Самый простой способ — вывести значения через console. Когда этого мало, программу запускают под отладчиком: он останавливает её на нужной строке и показывает все переменные. Общие приёмы отладки вы видели в учебнике; здесь — как это делается в Node.js.

Больше, чем console.log

// app.js
const posts = [
  { id: 1, title: 'Привет, Node.js', views: 120 },
  { id: 2, title: 'Работа с файлами', views: 85 },
];
 
console.table(posts);
console.error('Это сообщение уйдёт в поток ошибок');
 
console.time('сортировка');
posts.sort((a, b) => b.views - a.views);
console.timeEnd('сортировка');

console.table() нарисует в терминале таблицу со столбцами id, title и views. console.time() и console.timeEnd() с одинаковой меткой измерят время между ними, например «сортировка: 0.05ms».

Вложенные объекты

console.log() в Node.js показывает вложенность только до третьего уровня, глубже — [Object]. Чтобы увидеть всё, используйте console.dir() с параметром depth:

// app.js
const post = { id: 1, author: { name: 'Анна', profile: { city: { name: 'Berlin' } } } };
 
console.dir(post, { depth: null });

depth: null снимает ограничение, и в терминале будет видно name: 'Berlin'.

Запуск под отладчиком

Флаг --inspect включает отладчик. Добавьте в код строку debugger там, где хотите остановиться:

// src/posts.js
export async function addPost(title, body) {
  const posts = await loadPosts();
  debugger;
  // ...
}

Запустите сервер с флагом --inspect:

node --inspect src/server.js

Откройте в Chrome адрес chrome://inspect и нажмите inspect под своим скриптом. Отправьте POST-запрос на /posts — программа остановится на строке debugger, а в панели будут видны title, body и posts. Флаг --inspect-brk останавливает программу ещё на первой строке.

Отладка в VS Code

В VS Code проще всего открыть терминал командой «JavaScript Debug Terminal» из палитры команд (Ctrl+Shift+P). Любая программа, запущенная в нём через node или npm run, сразу подключается к отладчику. Точку остановки ставят щелчком слева от номера строки — писать debugger в коде не нужно.

Клавиша в VS CodeДействие
F5Продолжить до следующей точки
F10Следующая строка
F11Войти внутрь функции
Shift+F5Остановить отладку

Частая ошибка

Строку debugger и временные console.log() легко забыть в коде. На сервере без отладчика debugger ничего не делает, но лишние сообщения засоряют журнал и могут вывести пароли или личные данные. Перед коммитом найдите их поиском по проекту и удалите.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.