Какой правильный способ включить отладчик node с переключателем mocha --debug-brk?

У меня есть некоторые инструкции отладчика в моем тестируемом модуле и вы хотите запустить mocha с параметром --debug-brk и нажать мою точку останова, чтобы я мог проверить состояние моего модуля. К сожалению, всякий раз, когда я запускаю мокко с этой опцией, я заканчиваю пустым курсором на следующей строке. Я могу вводить текст, но нет ничего, что обрабатывает мои команды (это, конечно, не похоже на отладчик node):

$ mocha --debug-brk tests.js -R spec
debugger listening on port 5858
[BLANK CURSOR]

Я делаю что-то неправильно с тем, как я запускаю мокко?

Ответ 1

Чтобы ответить на исходный вопрос, хотя я также предлагаю вам изучить node-inspector: вы можете использовать отладчик CLI, встроенный в node через mocha с опцией debug вместо --debug или --debug-brk флаги. (Обратите внимание на отсутствие тире.)

В вашем примере вместо этого это будет:

$ mocha debug tests.js -R spec
debugger listening on port 5858
connecting... ok
break in node_modules/mocha/bin/_mocha:7
  5  */
  6 
  7 var program = require('commander')
  8   , sprintf = require('util').format
  9   , path = require('path')
debug> [CURSOR]

Опять же, debug, как указано выше, полужирным шрифтом, без тире. (=

Релевантно: https://github.com/visionmedia/mocha/issues/247

Ответ 2

Мне удалось заставить это работать, используя node-inspector. Я запускаю свой тест, как вы показываете в одной оболочке:

mocha --debug-brk mocha/test.js

а затем запустите node -инспектор во второй оболочке:

node-inspector

Вывод URL-адреса, который node -инспектор выдает в браузере, позволяет мне отлаживать веб-инспектор.

http://127.0.0.1:8080/debug?port=5858

Ответ 3

Используя недавнюю версию nodejs ( >= v6.3.0) и mocha ( >= 3.1.0), вы можете использовать интеграцию инспекторов V8.

Интеграция V8 Inspector позволяет подключать Chrome DevTools к Node.js экземпляры для отладки и профилирования

Использование

--inspect активирует интеграцию инспекторов V8, а --debug-brk добавляет точку останова в начале.

$ mocha --debug-brk --inspect
Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node

С скриптами npm

Если у вас есть тест npm script, который использует mocha, вы можете передать параметры от npm до вашего mocha script, используя конец разделителя опций --:

$ npm test -- --inspect --debug-brk

Кончик Chrome

Вместо того, чтобы каждый раз копировать URL-адрес, перейдите к chrome://inspect и щелкните соответствующую ссылку в разделе "Удаленная цель".

UPDATE: Поскольку nodejs v7.6.0 и mocha v3.3.0, вы можете использовать сокращение --inspect-brk для --inspect --debug-brk

Ответ 4

Если у вас установлен node -индекс, вы можете отлаживать тесты Mocha, не запуская сначала node -inpector. Самый простой способ -

node-debug _mocha

Это должно начать отладку тестов node в chrome (также работает на Safari)

Одна из причин, по которой я видел, что тесты не работают, иногда вы давали попробовать http://localhost:8080/debug?port=5858 или http://127.0.0.1:8080/debug?port=5858

Ответ 5

запустите mocha с флагом --inspect-brk и нажмите "открыть выделенный DevTools для node" в chrome со страницы chrome://inspect. В выделенном окне DevTools добавьте соединение localhost:9229 для автоматического подключения.

Также добавьте оператор debugger в файл, который вы хотите отлаживать.

(это использует последние версии node и chrome по состоянию на октябрь 2017 года)