debugging node.js with node-inspector

genwip picture genwip · Apr 28, 2014 · Viewed 47.8k times · Source

I'm trying to debug my nodejs app using node-inspector. But Google Chrome doesn't show the code.

I'm using the following,

Node.js : v0.10.26

Express : 4.0.0

Node Inspector : v0.7.3

Google Chrome version : 34.0.1847.131

This is what I'm doing to start the debugger..

$ node-inspector
Node Inspector v0.7.3
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.

In another console,

$ node --debug app.js 
debugger listening on port 5858
$

Then started Google Chrome and went to

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

It opens up node-inspector but without any code..all windows are empty.

Noticed that I'm not getting 'Express server listening on port 3000'

Tried all as per node-inspector fails to connect to node but no luck

Couldn't work out what I'm missing. Would be great of you have any suggestions..so I can debug my Node.js apps in Google Chrome.

Answer

Chev picture Chev · Apr 28, 2014

Try to run node --debug-brk app.js instead of just --debug. Your application may not be pausing before node inspector hooks into the node process. Using --debug-brk will force node to break on the first line of your app and wait for a debugger to attach to the process. Loading the node-inspector web interface is what causes node-inspector to attach to your node process; that's why you include the node debug port in the query string (localhost:8080/debug?port=5858). You're telling node-inspector what port it should reach out and attach to.

Here's an animated gif I put together showing a complete install and run of node-inspector.

In the gif I use the --debug flag because I'm not debugging any code that runs right at startup. I'm debugging inside a request handler, which only fires when the page is requested. Thus, refreshing the page causes node-inspector to break on that line.

I also put together a 15 minute YouTube tutorial a while ago.

http://youtu.be/03qGA-GJXjI

I hope that helps!