Отладка VSCode не работает для приложения NodeJs
Я добавил конфигурацию в запуск.файл json со следующими данными:
{
"name": "Attach"
"type": "node",
// TCP/IP address. Default is "localhost".
"address": "localhost",
// Port to attach to.
"port": 5858
}
Теперь я запускаю свое приложение со следующей командой: node --debug-brk ./bin/www
Когда я захожу в VSCode и выбираю Attach в меню отладки вверху и нажимаю на кнопку воспроизведения.
Он прикрепляется, но когда я захожу в браузер и открываю страницу, он не является точкой останова или функцией обработчика в моем файле index.js.
Не могли бы вы помочь, что может пойти не так?
3 ответов:
Ваши точки останова, вероятно, установлены слишком рано и не зарегистрированы узлом. Это должно помочь, если вы устанавливаете точки останова после подключения.
Мы улучшили этот опыт в VSCode, и он должен быть доступен в 0.4.0
Есть две проблемы с точками останова в узле (и эти проблемы не специфичны для VSCode, но вы можете увидеть их в инспекторе узлов):
Если вы задаете точки останова в коде запуска вашего приложения и запускаете узел с --debug (в отличие от --debug-brk), узел запускается немедленно и выполнил ваш код запуска до того, как VSCode смог зарегистрировать точки останова. Поэтому, если вам нужно отладить стартовый код, используйте флаг --debug-brk, поскольку он позволяет VSCode устанавливать точки останова прежде чем узел запустит приложение.
Узел не разбирает исходные файлы полностью при загрузке, но задерживает разбор замыканий (обратные вызовы и т. д.) до тех пор, пока их код не попадет в первую очередь. Как следствие, точки останова, установленные на обратных вызовах, не всегда корректно регистрируются узлом, поскольку он еще не проанализировал код. Это "ленивое" поведение можно отключить, запустив узел с флагом --nolazy.
В следующей версии VSCode (0.4.0) мы попытаемся решить эту проблему следующим образом: образом:
VScode всегда будет запускать узел с флагом --debug-brk, но скроет первую остановку и продолжит работу, если пользователь не указал "stopOnEntry: true". Это позволит избежать проблем с пропущенными точками останова в коде запуска.
Если точки останова установлены в коде, который не был проанализирован узлом, узел зарегистрирует их в следующей возможной позиции в проанализированном коде. Поскольку эти" фактические " позиции возвращаются узлом клиенту, VSCode может показать их должностное положение. Таким образом, пользователь увидит, что точка останова, установленная в непроверенном обратном вызове, "прыгает" в позицию ниже, и он лучше поймет, почему отладчик не останавливается в запрошенном месте. Кроме того, мы добавили кнопку "повторно применить" к виду точки останова, что позволяет действительно легко очистить и установить все точки останова.
Всегда очищайте точки останова и устанавливайте их после подключения.Я учился на своем горьком опыте. Это, конечно, ошибка.
Я копался в этом, и вот что я нашел до сих пор для 0.3.0.Это не работает!
- в коде добавьте точку останова в приложение.js или маршрут
- в терминальном режиме
node --debug src/server/app.js- в коде присоедините отладчик
Это работает!
- в терминальном режиме
node --debug src/server/app.js- В Коде удалить все точки останова
- в коде добавьте точку останова в приложение.js или маршрут
- в коде присоедините отладчик
Это не работает, так как --debug не запускается, если его arg после узла и перед файлом
- в терминальном режиме
node src/server/app.js --debug- в коде удалить все точки останова
- в коде добавьте точку останова в приложение.js или маршрут
- в коде присоедините отладчик
Это работает, если у вас есть глоток процесс
- в терминальном режиме
gulp serve-dev --debug- в коде удалить все точки останова
- в коде добавьте точку останова в приложение.js или маршрут
- в коде присоедините отладчик
Это не работает, иногда
- в терминальном режиме
gulp serve-dev --debug- в коде добавьте точку останова в приложение.js или маршрут
- в коде присоедините отладчик
Почему иногда? Лучшее, что я могу сказать, - это то, что точки останова иногда становятся пугающими. Иногда они работают нормально, а иногда мне приходится удалять их и повторно добавлять перед подключением отладчика.
Comments