Support for Node.js debuggability landed in Node.js in 2016. Here’s how to get up and running. (Post updated Jan 2018)ubuntu
1. Download and install the current version of node. (v6.3.0+ required)promise
2. Run node with the --inspect
flag:session
▸ node --inspect index.js
# Break on the first statement of the script with --inspect-brk
▸ node --inspect-brk index.js
(In Node 6, you have to use --inspect --debug-brk
for this inspect & pseudo-breakpoint combo.)
Next, you used to open the big chrome-devtools://
URL it spits out, but don’t. Now there’s a better way…
3. Open about:inspect
in Chrome
It’ll redirect you to chrome://inspect
quickly and you’ll see something like:
set targets:
4. Click the Open dedicated DevTools for Node link.
You’ll get a popup window for debugging your node session.
But better than that, when you kill and restart node, the window will automatically reconnect to it. 🔁🔁💥
(Btw: the inspect link beneath the specific target will only apply for that session of node and won’t reconnect.)
點擊connection,鏈接IP:5860,切換到sources
In DevTools, now connected to Node, you’ll have all the Chrome DevTools features you’re used to:
- Complete breakpoint debugging, stepping w/ blackboxing
- Source maps for transpiled code
- LiveEdit: JavaScript hot-swap evaluation w/ V8
- Console evaluation with ES6 feature/object support and custom object formatting
- Sampling JavaScript profiler w/ flamechart
- Heap snapshot inspection, heap allocation timeline, allocation profiling
- Asynchronous stacks for native promises
To see this in action, here’s my demo during the 2017 Node Summit: