Статьи

Быстрый взгляд на отладку Node.js с помощью StrongLoop и кода Visual Studio

Как я упоминал в своей последней записи о StrongLoop, я решил перейти от сборки API и начать смотреть на то, что еще доступно при работе с StrongLoop . Сегодня я собираюсь поговорить об отладке, и хотя она в основном «просто работает», я столкнулся с несколькими проблемами, о которых хочу предупредить людей.

Итак, прежде всего, в основных документах по отладке с помощью StrongLoop, « Отладка приложений» , упоминается использование команды slc debugдля начала отладки вашего приложения. Сначала я не совсем понял, но эта команда также отвечает за запуск вашего приложения. Вы можете подключиться к приложению, которое работает, но я полагаю, что большинство людей собираются протестировать локально и, вероятно, убьют свое приложение, а затем снова запустят его через отладчик.

Теперь первое, что происходит после запуска, slc debugэто то, что ваш браузер по умолчанию откроется с отладчиком. Отладчик поддерживается только в Chrome и Opera. Так что, если ваш браузер по умолчанию Firefox, как и для меня, просто скопируйте и вставьте URL в Chrome.

Здесь вещи стали немного странными для меня. Я заметил, что ничего не работает. Но потом я увидел, что отладчик был на самом деле приостановлен :

Shot1

Из того, что я знаю, отладчик Node оборачивает ваш код — ну, в общем, оберткой — и по какой-то причине он автоматически ломается в какой-то момент там. Нажав на синюю стрелку в правом верхнем углу (Возобновить выполнение скрипта), мы продолжим. И вот тут произошла еще одна странная вещь.

Очевидно, что отладчику требуется немного времени для запуска и запуска. Конечно, не долго. Я бы сказал, около 30 секунд. Но я был убежден, что отладчик не работает, потому что я сразу попытался запустить какой-то код с точкой останова, и ничего не получалось. То, что вы хотите сделать, это следить за вашим терминалом для сообщения о запуске вашего приложения. Итак, вот что у меня было изначально:

Shot2

Затем я нажал «Возобновить» в отладчике и вернулся в окно терминала, где я ожидал его обновления:

shot3

Хорошо, так в теории, вот и все. Чтобы проверить, я добавил этот маршрут к своему коду:

app.get('/test', function(req, res) {
console.log('doing test');
var x=1;
x++;
console.log("x is now "+x);
res.send('ok got stuff '+x);
});

В отладчике я добавил точку останова:

shot4

Затем я открыл URL-адрес в своем браузере (и хотя отладчик хочет, чтобы вы использовали Chrome, любой запрос к URL-адресу вообще будет работать) и подтвердил, что запрос был приостановлен, пока отладчик был приостановлен.

shot5

Обратите внимание, что вы также можете редактировать значения, что очень круто. Просто дважды щелкните и введите новое значение и возобновите. В целом — круто — и прост в использовании.

Говоря о простоте использования, не забывайте, что Visual Studio Code также включает встроенную поддержку для отладки приложений Node.js. Я не буду повторять то, что их превосходные доктора говорят об их поддержке отладки. Как и в случае slc debug, вы не хотите запускать свой сервер. Вместо этого вы сконфигурируете VS Code для запуска правильного сценария при нажатии отладки.

После этого вы можете перейти к просмотру файлов и добавить точку останова:

shot6

Затем запросите что-то, что запускает точку останова. Код автоматически сфокусируется (что, я должен сказать, я не уверен в своих чувствах — в общем, я никогда не хочу, чтобы мои приложения фокусировались), и тогда вы можете посмотреть на переменные и начать пошаговое выполнение кода.

shot7

Вы также можете изменять значения, но, по моему мнению, документы Кодекса не дают этого ясно. Вы захотите открыть консоль отладки и затем изменить код, используя простые назначения переменных.

shot8

Итак, есть два интересных варианта отладки приложений Node.js, и да, я знаю, что есть даже больше. Честно говоря, я больше склоняюсь к использованию кода для отладки, как мне нравится в моем редакторе, а не в браузере (что кажется странным, я люблю инструменты разработки), но, вероятно, я буду идти вперед и назад.