I’m looking for effective way for step-by-step debugging NodeJS server code. At this moment I use dozens of console.log()’s and it’s extremely hard. The perfect tool is one that would allow me to check the values of every variable in stack and trace my program line by line. Prefered OS = MacOS/Linux. Is it possible?
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Basically, Node.js is built on top of V8, so its debugging capabilities are also built on top of V8’s debugging capabilities.
V8 has an included debugger which can be accessed via TCP on port 5858.
So basically all you need is a frontend which is able to connect to port 5858 and talk V8’s debugging protocol.
One option is to use node-inspector which basically provides a debugging UI in your browser. Unfortunately, it does only work with Google Chrome and Apple Safari (which for me is no problem, but there may be others ;-)).
Another option is to use a plugin for Eclipse.
And, last but not least, the built-in debugger of Node.js (which always reminds me of MS-DOS’s
edlin) is also just a front-end for this TCP debugger, just a built-in one.
And of course, there are much more options … these three were just the first three ones that came to my mind 😉
How about this?
You can try to test for Nodeclipse version 0.2.0 beta.
It will help you to debug node apps easily.
GENERATING OF EXPRESS PROJECTSelect the [File]-[New]-[Project] menu. Select [Node]-[Express Project], and push [Next] button. Enter [Project name], and push [Finish] button.
node-inspector to provide the node debugging environment you’re looking for. It’s fantastic.
Check WebStorm. It is a great IDE, and also you can directly run your nodejs code, or connect to a debugging-enabled node process already running. In both cases, WebStorm provides what you are looking for: trace program execution line by line and on every line check the state of every variable.
Try nodeunit npm module for testing nodejs server side codes.
Checkout this link https://code.visualstudio.com/docs/nodejs/nodejs-debugging
node inspect built-in CLI step debugging
It took a while, but at some point Node finally added built-in debugging:
node inspect main.js
and this leaves you at the first line of the program.
nstep to next line
sstep into function
In order to view variables or inject code, you need to first enter REPL mode with:
and then you can run commands as in a
node interactive session, e.g. to see the value of a variable just write the variable name:
It is awkward to have to type those four characters
repl all the time, but I don’t know any alternative.
You can also add a
debugger statement to where you want to break in the program after a
const i = 1; debugger; i = 2;
Related question: How do I debug Node.js applications?
Tested in Node.js v10.15.1, Ubuntu 19.10.