на сайт

Перевод: импрув ёр node.js дебаггинг скилс

Предупреждение! Статья носит технический характер, просьба всем гуманитариям - репостнуть и отойти в сторону(шутка).

Гипотетически вы можете проверить каждую строку кода и попытаться найти опечатку. Если опечатка не обнаружена — вы можете зайти в console.logs, чтобы увидеть результат для кода, что не гарантирует избавление от болезненных ощущений ниже спины. Неужели есть лучшие методы?

Отладка серверного javascript логами устарела.

Логов просто недостаточно, так как это требует от нас идти по строкам (это очень медленно) при каждом перезапуске нашего сервера. Консольные логи также загромождают нашу кодовую базу ненужным кодом, и требуют трудозатрат для его удаления.

Задачка: Сколько энергии требуется, чтобы выявить логи среди фиктивных данных и других процессов?

Гораздо более эффективным способом будет отладка с помощью контрольных точек. С помощью контрольных точек мы можем перешагнуть через стек вызовов и цикл событий, чтобы диагностировать проблему.

Вы поняли, пора изучить другие варианты. Какие? Хорошо, что вы спросили!

У node.js есть встроенный инспектор

Всё так. У ноды фактически есть встроенный инспектор. Он использует средство просмотра протокола отладки v8 под капотом.

Позвольте мне показать вам - давайте начнем проект нового узла. Для начала установите express и nodemon. Далее файл server.js.


Теперь у нас есть базовый экспресс-сервер. Но вместо использования команды node server.js традиционным образом, мы добавляем дополнительный флаг к нашей команде.

--inspect сообщает ноде об открытии нового протокола отладки.

Как только мы запустим наш сервер с инспектором, вот что выведет консоль.

Сработало. Теперь откройте DevTools в Chrome по адресу http://localhost:3000/ .

Вау, нода внутри нашего браузера? Да! Мы по-прежнему используем наше приложение, как раньше, по адресу localhost:3000

Порт 0.0.0.0:9229 предназначен для использования DevTools.

Что делает Node Inspector?

Node Inspector позволяет использовать пользовательский интерфейс DevTools с собственным отладчиком ноды. Теперь DevTools может напрямую подключаться к процессу узла.

https://nodejs.org/docs/latest/api/debugger.html

Если вы знаете, как это работает в Firefox или Safari, сообщите нам об этом в комментариях.

Используем отладчик

Использование хром-отладчика очень похоже на использование отладчика для кода на стороне клиента. Вы устанавливаете точки останова, выполняете код, переходите через точки останова и находите ошибку.

Можете ли вы представить, насколько это полезно, когда у нас есть ошибка внутри большого контроллера? У нас есть доступ к отладчику, стеку вызовов, областям, локальным переменным, глобальным переменным и т.д.

Используем контрольные точки для перемещения по нашему коду.

Переходим на другой уровень

Осталось немного :)

20 июля 2018 года был особый день для отладки ноды. Почему? Команда разработчиков Google Chrome открыла свой расширенный инструмент для отладки - ndb!

Ndb - прекрасный инструмент для отладки. Раз так - давайте его протестируем!

Установка ndb

npm install -g ndb

Установка не сложнее другого пакета npm.

Использование

Чтобы использовать ndb, нам просто нужно прикрепить наш стартовый скрипт к ndb.

Готово! Давайте перезагрузим наш сервер — заметьте, что мы используем nodemon - как и на любом другом проекте.

Теперь у нас есть новый экземпляр хрома с единственной целью отладки. Круто, да?! У нас даже есть доступ к узлу process, глобальным объектом которого является объект window.

На этом всё. Если хотите больше легеньких, но технических статей — сообщите об этом в комментариях или лично. Удачи и до скорых встреч!


Плюсануть
Поделиться
Отправить

Читайте также

И комментируйте