Подтвердить что ты не робот

Как PROPERLY отлаживать node.js с помощью инспектора node?

У меня есть приложение, встроенное в node.js, и я использую инспектор node для отладки. Но из-за этого это довольно сложно:

  • Мои точки останова никогда не сохраняются после перезапуска сервера.
  • Я не могу поставить точку останова на файл, который еще не загружен; поэтому я должен перейти от первого script к тому, который я хочу; ДЕЙСТВИТЕЛЬНО БОЛЬНЫ!

Как вы действительно отлаживаете node.js с помощью инспектора node?

Видео о том, как использовать node.js, довольно вводят в заблуждение, поскольку все в модуле...
http://www.youtube.com/watch?v=AOnK3NVnxL8

или этот сценарий уже загружен в первый script
http://www.youtube.com/watch?v=HJOH0-g8f6E&feature=mfu_in_order&list=UL

Изменить:

Никто не может ответить на этот вопрос?: S

4b9b3361

Ответ 1

В javascript вы можете установить точки останова, используя оператор debugger;. Однако они будут только приостанавливать node, если отладчик фактически подключен.

Итак, запустите node script с помощью

node --debug-brk myfile.js

затем запустите node -инспектор и нажмите кнопку воспроизведения, чтобы перейти к следующей точке останова, и она попадет в точку останова debugger; (по крайней мере, это работает для меня в банкомате)

(как отмечено в комментариях: в последних версиях node вам больше не нужно отдельно устанавливать node-inspector. Если вы запустите node с помощью node --debug-brk --inspect myfile.js, вы получите URL-адрес, который запускает отладчик в вашем браузер).

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

если ваша точка останова не попадает автоматически, но только после некоторого действия пользователя вам не понадобится --debug-brk.

Ответ 2

Проблема с точками останова на стороне клиента заключается в том, что при изменении файла трудно отслеживать позицию точки останова. В отличие от редактора, он не может отслеживать изменения строк и т.д.

@RyanOlds предложение об использовании отладчика; операторы также являются хорошими, но вы должны убедиться, что отладчик подключен до того, как вычисляется оператор, потому что он игнорируется в противном случае. Начиная с --debug-brk - это хороший способ заставить это, потому что выполнение приостанавливается в первой строке, что позволяет прикрепить отладчик и продолжить выполнение.

Вы можете попробовать отладку с node внутренним отладчиком.

Изменить: Однако, согласно v8 DebuggerProtocol, можно установить контрольные точки на script, которые еще не загружены. И вы можете установить точки останова по функциям, script и многое другое. Поэтому должно быть возможно, чтобы node-inspector отслеживал ваши контрольные точки (в сеансе или что-то еще). Однако это не так прямо сейчас.

Может быть, если v8 позволяет определенной части кода запускать точку останова, похожую на отладчик узлов? Изменить: это так, вы должны иметь возможность запускать разрыв, бросая любое старое исключение (пойманное или неотображенное).

Ответ 3

Новая версия (0.3.x) инспектора node сохраняет точки останова в локальном хранилище браузера и автоматически восстанавливает их.

https://github.com/node-inspector/node-inspector/pull/116

Ответ 4

Попробуйте использовать IntelliJ WebStorm - там бесплатная пробная версия и лицензии не являются чрезмерно дорогостоящими. Он позволяет сохранять точки останова во всех ваших файлах до запуска собственного внутреннего процесса node и запоминает их через перезагрузки процесса.

Я согласен - node -инспектор выглядит блестящим, но совершенно бесполезен, если ваше приложение не имеет четкого места для установки точки останова на верхнем уровне script сразу после загрузки исходных файлов, но прежде, чем вы попадете в область вы хотите отлаживать. Вы можете структурировать свой собственный код таким образом, но вам не повезет с другими полезными библиотеками, которые вы хотите включить. Также... почему инструмент отладки диктует вашу структуру проекта?

Забывание точек останова крайне бесполезно... большинство моих прогонов отладки занимают более одного пошагового руководства, так как у других людей код легко проходит мимо, где вы хотите быть.

Ответ 5

Вы можете использовать node -codein для проверки. Он не будет выполнять контрольные точки времени выполнения, но должен облегчить процесс проверки.

https://github.com/ketamynx/node-codein/

Ответ 6

Также стоит отметить.. vscode имеет отличный отладчик для node.

https://code.visualstudio.com/

Доступно на Mac, Linux и Windows.

Это точки останова во время выполнения (без необходимости писать отладчик, операторы), поддерживает переменные часы и даже имеет окно стека вызовов (очень приятно).

Все так автоматизировано, теперь это мой goto над возвышенным текстом при использовании nodejs (и я ЛЮБЛЮ возвышенное).

Ответ 7

Теперь он построен , включая сохранение точек останова. Я просто протестировал его в node 7.3.0.

node --inspect --debug-brk app.js

Это печатает такой URL-адрес

To start debugging, open the following URL in Chrome: chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/c3d5d93e-9d27-41b9-a4da-607e43c9d4f8

Положите это в Chrome, и вам хорошо идти.

Если вы хотите пропустить копию/вставку URL-адреса, сделайте следующее:

npm install -g inspect-process inspect --debug-brk app.js

К сожалению, метод inspect-process не сохраняет точки останова: - (.

Вот видео, которое я сделал: https://youtu.be/rtZKUnks6jI