When writing applications using Node.js, it is sometimes helpful to use the command line interface (CLI) to run specific commands in order to quickly find out useful information or debug various bits of code. While Node.js is often used to spin up web servers for various web applications, it can also be used to write command line applications. When testing a command line application, it can be quite convenient to simply use the console to type in a CLI command to help debug while you are already in the console environment!
If you want to take a look at all of the available CLI commands, you can use the –help (or -h for short) flag in order to get the Node.js CLI help documentation. It will display a listing of the available commands for your version of Node.js. Here is an example:
>Usage: node [options] [ -e script | script.js ] [arguments]
node debug script.js [arguments]
-v, –version print Node.js version
-e, –eval script evaluate script
-p, –print evaluate script and print result
-c, –check syntax check script without executing
-i, –interactive always enter the REPL even if stdin
does not appear to be a terminal
-r, –require module to preload (option can be repeated)
–no-deprecation silence deprecation warnings
–trace-deprecation show stack traces on deprecations
–throw-deprecation throw an exception anytime a deprecated function is used
–no-warnings silence all process warnings
–trace-warnings show stack traces on process warnings
–trace-sync-io show stack trace when use of sync IO
is detected after the first tick
–track-heap-objects track heap object allocations for heap snapshots
–prof-process process v8 profiler output generated
–zero-fill-buffers automatically zero-fill all newly allocated
Buffer and SlowBuffer instances
–v8-options print v8 command line options
–v8-pool-size=num set v8’s thread pool size
–tls-cipher-list=val use an alternative default TLS cipher list
–openssl-config=path load OpenSSL configuration file from the
–icu-data-dir=dir set ICU data load path to dir
–preserve-symlinks preserve symbolic links when resolving
and caching modules.
NODE_PATH ‘;’-separated list of directories
prefixed to the module search path.
NODE_DISABLE_COLORS set to 1 to disable colors in the REPL
NODE_ICU_DATA data path for ICU (Intl object) data
NODE_REPL_HISTORY path to the persistent REPL history file
Documentation can be found at https://nodejs.org/
If you simply need to know what version of Node.js you have installed, you can use the –version (-v for short) flag. This information is helpful to determine if you have the right version of Node.js to use a particular library or code construct, or to simply ensure you have the right version of Node.js installed for what you need to do.
Here is an example:
If you want to evaluate a quick expression inline, you can simply use the –print (-p for short) flag. It will evaluate the expression and print the result to the console. Here is an example:
> node –print 4-3
Note that you can use –eval (-e for short) as well, but the result will not be printed to the console unless you include a console.log() around the expression.
You may want to evaluate the code in a file without actually running the code. In such cases, you can use the –check (-c for short) flag. For example, suppose you have a file named app.js with the following contents:
var message = ‘Hello there!’;
console.log(‘This is a new command line app.’);
console.log(message + ‘ Enjoy the app);
If you want to check for syntax errors, you can now use the –check flag to test the code without trying to run it, as in the following example:
> node –check app.js
console.log(message + ‘ Enjoy the app);
SyntaxError: Invalid or unexpected token
at startup (bootstrap_node.js:144:11)
The checker immediately notices the missing closing quote in the console.log on line 3. You can now fix the error and run the same command again to ensure that the fix indeed worked. If so, you will simply get an empty command prompt once it completes.
As you can see, these CLI commands can be a quick and handy way to get information or help you to debug your apps. Knowing these can save you some time as you are working on your Node.js applications, allowing you to do a little bit more work while you are still in your console!