На мой взгляд, отладка кода Node.js (Node) никогда не была такой большой проблемой, в основном из-за отличного отладчика, встроенного в Node, что имело место, по крайней мере, до тех пор, пока я был вовлечен. с написанием программного обеспечения в Node. Для меня Python — это пример языка, на котором я вообще не тратил много времени на выяснение тонкостей отладки, а вместо этого вернулся к регистрации или печати строк типа «HERE0, HERE1, HERE2» в каждой строке кода. И я могу с абсолютной уверенностью сказать: «Такой рабочий процесс — отстой!» И по сравнению с таким языком, как Python (по крайней мере, в моих руках), отладка Node кажется простой, и, откровенно говоря, именно таким способом написания кода ДОЛЖНО быть.

Python: logging.debug('This is a debug message from Python.')
Node.js: console.log('This is a debug message from Node.js')

Когда дело доходит до параметров отладки первого класса (полностью игнорируя console.log), существует множество параметров, большинство из которых построены поверх встроенного в Node отладчика, который в некотором смысле является просто сервером протокола, который запускается при использовании переключателя --inspect. (или --inspect-brk, или какая-то другая форма) при запуске исполняемого файла Node. Если вы знакомы с клиент-сервером, а я уверен, что многие из них знакомы, парадигма отладчика/отладчика Node-клиента не должна быть слишком сложной для концептуализации или понимания. В основном о серверной части заботится кодовая база Node. Это оставляет клиентскую сторону как единственную реальную точку, где вы должны сделать некоторые выборы в отношении отладки. И хотя существует много доступных клиентов, которые используют протокол отладки V8, я бы разделил их на две категории, из которых мы собираемся сосредоточиться на одной в каждой категории, VSCode и Chrome DevTools:

  • Интерфейс Chrome Devtools
  • Интерфейсы IDE (VSCode/Visual Studio, JetBrains Webstorm, …)

Вышеупомянутые инструменты отладки в основном являются клиентами, которые используют протокол, не отличающийся от того, что браузер использует протокол HTTP. Да, под капотом много всего, например, постоянно меняющиеся UUID и веб-сокеты, но на самом деле ничего, что должно мешать или усложнять отладку кода вашего конкретного приложения. Команды, занимающиеся разработкой/реализацией протокола отладки, позаботились о деталях. Если вы не хотите прыгать в кроличью нору протокола V8, а не в свою собственную, вы сможете прекрасно обойтись, не беспокоясь и не беспокоясь о подробностях внутренней работы отладчика и протокола V8. Я бы даже сказал, что подключиться к протоколу отладчика и проверить свой код так же легко/просто, как подключиться к этому веб-сайту (протокол HTTP, http-сервер, http-клиент), и это можно сделать за считанные минуты… даже секунды.

В этом посте я покажу вам, как выполнять отладку в VSCode, а затем также создавать общие URL-адреса, которые можно использовать для подключения к запущенным сеансам отладки (ваш локальный node.js — процесс проверки). Так, например, вы можете объединить код отладки, или собрать аналитику отладки, или… Если вам нужен проект для проверки этого, вы можете скачать репозиторий здесь, в противном случае используйте любой код, который вы хотите. Необходимо выполнить еще несколько шагов по настройке, включая установку расширения NiMS VSCode (https://marketplace.visualstudio.com/items?itemName=June07.nims), которое создает общие URL-адреса. Без него вы по-прежнему сможете нормально использовать отладчик Node, вы просто не сможете поделиться своими локальными сеансами отладки с другими, не создавая сетевой туннель или не выполняя какую-либо другую магию настройки сети.

git clone https://github.com/june07/hello.git helloworld

Вы заметите, что если вы переключаетесь между отладчиком VSCode и Chrome DevTools, вы должны иметь возможность использовать элементы управления отладчика в каждом соответствующем инструменте, в то время как они будут синхронизироваться друг с другом во время выполнения программы.

Поздравляем, вы успешно использовали VSCode и Chrome DevTools, чтобы начать отладку своего кода Node.js, и вы на пути к улучшенному опыту разработки!

Отладка Node.js — это действительно простой и понятный процесс. Я слышал, что в прошлом это могло быть головной болью, но я думаю, что мы показали, что инструменты, доступные сегодня, делают это проще простого. Надеюсь, этот пост показал вам, как отказаться от использования стольких операторов console.log в вашем коде или, по крайней мере, не для целей отладки.

Первоначально опубликовано на https://blog.june07.com 4 июня 2019 г.