Running and Debugging Node.js
AppCode helps you run and debug your Node.js applications. You can debug applications that are started from AppCode as well as attach to already running applications.
Before you start
Install and enable the NodeJS plugin. The plugin is not bundled with AppCode, but it can be installed from the JetBrains plugin repository as described in Managing Plugins.
Debugging a Node.js application
AppCode makes it easier to debug Node.js applications. You can put breakpoints right in your JavaScript or TypeScript code so you no longer need any debugger
and console.log()
statements. You can do many things that will help you explore the code and understand where the bug is. In the Debug tool window, you can view the call stack and the variables in their current state, evaluate expressions in the editor, and step through the code.
Local and Remote debugging
AppCode supports two debugging modes:
- Local debugging: in this mode, your application is started from AppCode and is running locally on your computer. To debug it, use a Node.js configuration.
- Debugging a remote application: in this mode, your application is running in a remote environment in the debug mode and AppCode attaches to a running process. AppCode recognizes
--inspect
and--debug
flags so you can make any application accessible for remote debugging. AppCode supports remote debugging with the Chrome Debugging Protocol and the V8 Debugging Protocol (also known as Legacy Protocol). In either case, a debugging session is initiated through a run/debug configuration of the type Attach to Node.js/Chrome.
Debugging a Node.js application locally
- Set the breakpoints in the Node.js code where necessary.
- Create a Node.js run/debug configuration. If necessary, AppCode can generate a JavaScript Debug configuration and start it automatically together with the Node.js configuration.
- Choose the newly created Node.js configuration in the Select run/debug configuration drop-down list on the toolbar and click next to it. The Debug Tool Window opens.
- Perform the steps that will trigger the execution of the code with the breakpoints.
- Switch to AppCode, where the controls of the Debug tool window are now enabled. Proceed with the debugging session — step through the breakpoints, switch between frames, change values on-the-fly, examine a suspended program, evaluate expressions, and set watches.
Using interactive Debugger Console
When you are debugging a Node.js application, AppCode shows two console tabs in the Debug tool window - Console and Debugger Console.
- The Console tab shows the output of the node process itself, that is, everything that is written to process.stdout and process.stderr directly or is logged using console.*.
- The Debugger Console lets you execute JavaScript code, view the console.log messages, jump to the location where
console.log
was called, and use other console features provided by the Chrome Debugging Protocol.
Debugging a Node.js application that uses nodemon
The AppCode built-in debugger can automatically reconnect to running Node.js processes. This lets you debug Node.js applications that use the nodemon utility, which automatically reloads your Node.js process when the code is updated. To debug such application, you need to start it in the debug mode (with the --inspect
flag) and then connect to it using the Attach to a Node.js/Chrome debug configuration with the Reconnect Automatically option on.
To install nodemon
- Open the embedded Terminal ( or ⌥F12) and type
npm install --save-dev nodemon
oryarn add nodemon --dev
at the command prompt to install nodemon as a development dependency.
To start an application with nodemon in the debug mode
- Create and run the following
npm debug
script:debug": "nodemon --inspect <path_to_the_file_that_starts_your_application>
To debug an application
- Set the breakpoints in your code as necessary.
- Create a new Attach to a Node.js/Chrome configuration as described in Debugging a running Node.js application and select the Reconnect automatically checkbox. Usually, you don’t need to change the port in the configuration (
9229
) because it’s the default port the debugger is listening on. But you can double-check what port is used in the message logged when you run the app in the debug mode. - Choose the newly created Attach to Node.js/Chrome configuration in the Select run/debug configuration drop-down list on the toolbar and click next to it. The debugger stops at the breakpoints that you put in your code in AppCode.
Now, every time you make any changes to the code and save them (⌘S), nodemon will automatically reload the application and the debugger will automatically re-attach to the restarted process.
Node.js multiprocess debugging
AppCode supports debugging additional Node.js processes that are launched by the child_process.fork() method or by the cluster module. Such processes are shown as threads in the Frame pane on the Debugger tab of the Debug Tool Window.
- Set the breakpoints in the processes to debug.
- Create a Node.js run/debug configuration.
- Choose the newly created configuration in the Select run/debug configuration drop-down list on the tool bar and click Debug .
The Debug Tool Window opens and the Frames drop-down list shows the additional processes as threads as soon as they are launched:
To examine the data (variables, watches, etc.) for a process, select its thread in the list and view its data in the Variables and Watches panes. When you select another process, the contents of the panes are updated accordingly.