Отладка 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.
Не могли бы вы помочь, что может пойти не так?

764   3  

3 ответов:

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

Мы улучшили этот опыт в VSCode, и он должен быть доступен в 0.4.0

Есть две проблемы с точками останова в узле (и эти проблемы не специфичны для VSCode, но вы можете увидеть их в инспекторе узлов):

  1. Если вы задаете точки останова в коде запуска вашего приложения и запускаете узел с --debug (в отличие от --debug-brk), узел запускается немедленно и выполнил ваш код запуска до того, как VSCode смог зарегистрировать точки останова. Поэтому, если вам нужно отладить стартовый код, используйте флаг --debug-brk, поскольку он позволяет VSCode устанавливать точки останова прежде чем узел запустит приложение.

  2. Узел не разбирает исходные файлы полностью при загрузке, но задерживает разбор замыканий (обратные вызовы и т. д.) до тех пор, пока их код не попадет в первую очередь. Как следствие, точки останова, установленные на обратных вызовах, не всегда корректно регистрируются узлом, поскольку он еще не проанализировал код. Это "ленивое" поведение можно отключить, запустив узел с флагом --nolazy.

В следующей версии VSCode (0.4.0) мы попытаемся решить эту проблему следующим образом: образом:

  1. VScode всегда будет запускать узел с флагом --debug-brk, но скроет первую остановку и продолжит работу, если пользователь не указал "stopOnEntry: true". Это позволит избежать проблем с пропущенными точками останова в коде запуска.

  2. Если точки останова установлены в коде, который не был проанализирован узлом, узел зарегистрирует их в следующей возможной позиции в проанализированном коде. Поскольку эти" фактические " позиции возвращаются узлом клиенту, VSCode может показать их должностное положение. Таким образом, пользователь увидит, что точка останова, установленная в непроверенном обратном вызове, "прыгает" в позицию ниже, и он лучше поймет, почему отладчик не останавливается в запрошенном месте. Кроме того, мы добавили кнопку "повторно применить" к виду точки останова, что позволяет действительно легко очистить и установить все точки останова.

Всегда очищайте точки останова и устанавливайте их после подключения.Я учился на своем горьком опыте. Это, конечно, ошибка.

Я копался в этом, и вот что я нашел до сих пор для 0.3.0.

Это не работает!

  1. в коде добавьте точку останова в приложение.js или маршрут
  2. в терминальном режиме node --debug src/server/app.js
  3. в коде присоедините отладчик

Это работает!

  1. в терминальном режиме node --debug src/server/app.js
  2. В Коде удалить все точки останова
  3. в коде добавьте точку останова в приложение.js или маршрут
  4. в коде присоедините отладчик

Это не работает, так как --debug не запускается, если его arg после узла и перед файлом

  1. в терминальном режиме node src/server/app.js --debug
  2. в коде удалить все точки останова
  3. в коде добавьте точку останова в приложение.js или маршрут
  4. в коде присоедините отладчик

Это работает, если у вас есть глоток процесс

  1. в терминальном режиме gulp serve-dev --debug
  2. в коде удалить все точки останова
  3. в коде добавьте точку останова в приложение.js или маршрут
  4. в коде присоедините отладчик

Это не работает, иногда

  1. в терминальном режиме gulp serve-dev --debug
  2. в коде добавьте точку останова в приложение.js или маршрут
  3. в коде присоедините отладчик

Почему иногда? Лучшее, что я могу сказать, - это то, что точки останова иногда становятся пугающими. Иногда они работают нормально, а иногда мне приходится удалять их и повторно добавлять перед подключением отладчика.

Comments

    Ничего не найдено.