Какой правильный способ включить отладчик 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 года)