Использование отладчика Node.js для удовольствия и прибыли

Автор: | 06.08.2026

Знали ли вы, что в Node.js есть встроенный отладчик? Я не знал об этом до нескольких месяцев назад. Узнайте, как он может значительно облегчить процесс отладки вашего кода.

Для выполнения примеров дома вам понадобится:

Сначала напишем код для отладки. Мы будем суммировать содержимое массива с помощью цикла `for`.

Скопируйте следующий код в файл с именем `index.js`:

Запустив этот файл с помощью команды `node index.js`, вы увидите вывод `NaN`.

Вместо того чтобы биться головой о клавиатуру, запустим файл через отладчик Node.js, добавив ключевое слово `debug` к команде `node`.

Отладчик загрузит файл и перейдет в режим паузы, то есть достигнет начальной точки останова. Если вы когда-либо использовали GDB, то почувствуете себя как дома. Если нет, то сейчас вы увидите, насколько мощными могут быть отладчики.

Поскольку наша точка останова находится внутри цикла, программа будет приостанавливаться на каждом проходе. Давайте установим наблюдатели за переменными, которые нас интересуют. Наблюдатели будут выводить значение переменной каждый раз, когда достигается точка останова.

Теперь дадим отладчику команду продолжить выполнение.

Мы достигли точки останова и видим значения наших наблюдаемых переменных.

Значения кажутся корректными. Продолжим выполнение с помощью команды `c`.

Это всё ещё правильно. Теперь мы должны выйти из цикла и вывести общую сумму. Продолжим.

Ой, подождите секунду. Вот наше `NaN`, и что это за `undefined`? Также, почему мы снова запустили этот цикл? Давайте выведем длину списка. Мы можем использовать команду `exec` для выполнения строки JavaScript прямо в отладчике.

Ой! Мы допустили ошибку, использовав `<=` вместо `<`. Возможно, здесь не так много кода, но уверен, вы вспомните баг, с которым сталкивались, где пошаговая отладка и просмотр переменных могли бы его выявить. # В реальных условиях Теперь рассмотрим пример из реальной жизни. Допустим, вы используете Twilio для получения SMS впервые и ещё не ознакомились с нашей прекрасной новой документацией, чтобы узнать, как выглядит полезная нагрузка. Вместо того чтобы проверять данные с помощью многочисленных `console.log`, мы можем установить точку останова и перейти в магический REPL прямо в середине выполнения программы. Замените содержимое файла `index.js` следующим базовым приложением на Express, которое принимает POST-запрос от Twilio. Мы можем установить точку останова в коде, добавив `debugger` туда, где хотим — это будет проигнорировано, если отладчик не используется. Далее установите зависимости. Запустите Ngrok на порту 3000 и настройте ваш Twilio-номер телефона для отправки POST-запросов входящих сообщений на адрес http://YOUR_NGROK_URL.ngrok.io/sms. Если вы раньше не использовали Ngrok, мой друг Фил написал отличную статью о том, почему вам понравится использовать его для тестирования вебхуков. Запустите приложение в режиме отладки и дайте отладчику команду продолжить выполнение после начальной точки останова. Отправьте текстовое сообщение на ваш Twilio-номер телефона и наблюдайте, как срабатывает точка останова. Мы фактически будем приостановлены с открытым HTTP-соединением. Введите `repl`, чтобы перейти в REPL вашего приостановленного приложения. Запрос останется открытым около 15 секунд, так что если вы будете достаточно быстры, то сможете отправить ответное сообщение, ответив Twilio. Поскольку мы установили заголовок `Content-Type` в `text/plain`, любой текст, который мы отправим обратно, будет автоматически отправлен как SMS. Возможно, вам потребуется повторно инициировать запрос, если вы получите ошибку. Не забудьте начальную команду `continue`. # Заключение Использование встроенного отладчика Node.js дает вам невероятный контроль и возможность интроспекции вашего кода. До того как я узнал об отладчике, я многократно запускал свой код с различными `console.log`. Теперь я часто использую отладчик для тестирования вебхуков или тел ответов API-запросов. Возможность просто покопаться и написать строки вашего приложения в REPL чрезвычайно продуктивна. Дайте знать, если найдете креативное применение отладчику в своем коде.