ยท hands on
Debugging Node.js with Chrome DevTools
You can use Chrome's DevTools to debug Node.js applications. To do this, you need to set your Node.js app as a remote target using the `--inspect` flag when starting the `node` process. Once your app is registered, you can open the DevTools for Node in Google Chrome.
You can use Chrome's DevTools to debug Node.js applications. It's called remote debugging and can be started from Google Chrome's internal website. In the following article we will show you how.
Contents
- Setup your Node.js app for debugging
- Use Chrome DevTools
- Use CLI Debugger
- Pause Debugging
- TypeScript Debugging Setup
- Debugger doesn't stop with TypeScript
Setup your Node.js app for debugging
To inspect your Node.js app with Google Chrome DevTools, you have to make it a remote target. This can be done by using the --inspect
flag when starting the node
process:
node --inspect ./dist/app.js
Use Chrome DevTools
Once your Node.js app is registered as remote target and listening for debuggers, you can open the webpage "chrome://inspect/#devices" in Google Chrome to see the dedicated DevTools for Node.
Set IP and Port
By default, the DevTools try to discover targets on "127.0.0.1:9229". You can change the host and port. Make sure that your Node.js process is listening to it. You can point Node.js to a specific IP and Port by running:
node --inspect=127.0.0.1:9200 ./dist/app.js
If you want to allow external connections (from the public internet) you have to bind the debugging interface to IP/Host "0.0.0.0".
Use CLI Debugger
If you want to run debugging entirely in the CLI, you can start your app with:
node inspect ./dist/app.js
(note the missing hyphens!)
Be aware that the Node.js inspector supports breakpoints but is not a full-featured debugger. If you want to continue from a breakpoint (set with the debugger
statement), you have to enter cont
(continue) within the CLI.
Pause Debugging
When your app has a heavy initialization, you may want to pause your app until the debugger is attached. This can be done by using the flag --inspect-brk
, which sets a break before running your code. You can use your remote debugger (i.e. Chrome DevTools) to unpause the debugging process.
TypeScript Debugging Setup
If you want to use Node's debugger for TypeScript code, you will have to compile your Node.js app to JavaScript. Make sure that the compiler option "sourceMap" in "tsconfig.json" is set to true
in order to get source map support.
- Run
npx tsc
to compile your TypeScript app to JavaScript - Run
node --inspect ./dist/app.js
to start your compiled code in watch mode for debuggers
When you are using ts-node
, you can directly call:
node --inspect -r ts-node/register ./src/app.ts
Debugger doesn't stop with TypeScript
When your TypeScript code uses debugger
statements but your code doesn't stop, then it is very likely that your debugger
keyword got removed during compilation. You can prevent TypeScript's compiler from removing the debugger
keywords by using this code comment:
debugger; // (tsc-save)