Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the right way to enable the node debugger with mocha's --debug-brk switch?

I have some debugger statements in my module under test and want to run mocha with --debug-brk set and hit my breakpoint so that I can inspect the state of my module. Unfortunately, whenever I run mocha with this option, I end up with a blank cursor on the next line. I can enter text, but there's nothing that appears to be processing my commands (it certainly doesn't look like the node debugger):

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

Am I doing something wrong with how I'm launching mocha?

like image 255
Howard Dierking Avatar asked Jan 16 '13 06:01

Howard Dierking


People also ask

How do I run a node script in debug mode?

Open the starting file (typically index. js ), activate the Run and Debug pane, and click the Run and Debug Node. js (F5) button. The debugging screen is similar to Chrome DevTools with a Variables, Watch, Call stack, Loaded scripts, and Breakpoints list.


1 Answers

Using a recent version of nodejs (>=v6.3.0) and mocha (>=3.1.0), you can use V8 inspector integration.

V8 Inspector integration allows attaching Chrome DevTools to Node.js instances for debugging and profiling

Usage

--inspect activates V8 inspector integration, and --debug-brk adds a breakpoint at the beginning. Since nodejs v7.6.0 and mocha v3.3.0, you can use the --inspect-brk shorthand for --inspect --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 

With npm scripts

If you have a npm test script that uses mocha, you can pass the options from npm to your mocha script by using the end of option delimiter --:

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

Chrome tip

Instead of copy-pasting the url each time, go to chrome://inspect and click the appropriate link in the "Remote target" section.

like image 191
stropitek Avatar answered Sep 22 '22 05:09

stropitek