JetBrains Rider 2018.1 Help

Running and Debugging Node.js

JetBrains Rider helps you run and debug your Node.js applications. You can debug applications that are started from JetBrains Rider as well as attach to already running applications.

Before you start

Install and enable the NodeJS plugin. The plugin is not bundled with JetBrains Rider, but it can be installed from the JetBrains plugin repository as described in Installing, Updating and Uninstalling Repository Plugins and Enabling and Disabling Plugins.

Running a Node.js application

JetBrains Rider runs Node.js applications according to a run configuration of the type Node.js. JetBrains Rider also uses this configuration for debugging Node.js applications locally.

To create a Node.js run/debug configuration

  1. From the main menu, choose Run | Edit Configuration, then in the Edit Configurations dialog, click add on the toolbar and select Node.js from the pop-up list. The Run/Debug Configuration: Node.js dialog opens.
  2. Specify the Node.js interpreter to use, see Configuring a local Node.js interpreter for details.
  3. In the JavaScript File field, specify the path to the main file of the application that starts it (for example, bin/www for Node.js Express applications).
  4. Optionally:
    • Specify the Node Parameters that customize the start of Node.js. For example, to make your application accessible for remote debugging, type one of the debugging flags depending on your Node.js version: --inspect=<debugger port> for Node.js versions 6.5 and higher or --debug=<debugger port> for any Node.js version earlier than 8. The default debugger port is 5858.
    • In the Application parameters text box, specify the arguments to be passed to the application on start through the process.argv array.

To run an application

  • Choose the newly created Node.js configuration in the Select run/debug configuration drop-down list on the toolbar and click run next to it. The application starts, and the Run window opens showing the application output.

Debugging a Node.js application

JetBrains Rider 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

JetBrains Rider supports two debugging modes:

  • Local debugging: in this mode, your application is started from JetBrains Rider 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 JetBrains Rider attaches to a running process. JetBrains Rider recognizes --inspect and --debug flags so you can make any application accessible for remote debugging. JetBrains Rider 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

  1. Set the breakpoints in the Node.js code where necessary.
  2. Create a Node.js run/debug configuration as described above. If necessary, JetBrains Rider can generate a JavaScript Debug configuration and start it automatically together with the Node.js configuration as described in Starting a JavaScript Debug configuration together with a Node.js configuration.
  3. Choose the newly created Node.js configuration in the Select run/debug configuration drop-down list on the toolbar and click debug next to it. The Debug window opens.
  4. Perform the steps that will trigger the execution of the code with the breakpoints.
  5. Switch to JetBrains Rider, 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, JetBrains Rider 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.*.
    ws_node_debugging_process_console.png
  • 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.
    ws_node_debugging_debug_console.png

Debugging a running Node.js application

With JetBrains Rider, you can debug an application that is running in a remote environment. JetBrains Rider 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 an Attach to Node.js/Chrome configuration.

To debug with Chrome Debugging Protocol

  1. Set the breakpoints as necessary.
  2. Choose Run | Edit Configurations from the main menu, then click add in the Edit Configuration dialog box that opens, and choose Attach to Node.js/Chrome from the list. The Run/Debug Configuration: Attach to Node.js/Chrome dialog box opens.
  3. Specify the host where the target application is running and the port passed to --inspect when starting the Node.js process to connect to. Copy the port number from the information message Debugger listening <host>:<port> in the Terminal tool window or in the Run tool window that controls the running application. The default port is 9229.
  4. In the Attach to area, choose Chrome or Node.js > 6.3 started with --inspect.
  5. Choose the newly created Attach to Node.js/Chrome configuration in the Select run/debug configuration drop-down list on the toolbar and click debug next to it. The Debug window opens.
  6. Perform the actions that will trigger the code at the breakpoint. Control over the debugging session returns to JetBrains Rider.
  7. Switch to JetBrains Rider. In the Debug tool window, step through the breakpoints, switch between frames, change values on-the-fly, examine a suspended program, evaluate expressions, and set watches.

To debug with V8 Debugging Protocol

  1. Create an Attach to Node.js/Chrome run/debug configuration as described above and specify the host and the port passed to --debug. The default port is 9229.
  2. Make sure the application to debug has been launched in the remote environment with the following parameters: --debug=<debugger port>. The default port is 5858.
  3. Proceed as during a debugging session with Chrome Debugging Protocol.

Starting a JavaScript Debug configuration together with a Node.js configuration

With JetBrains Rider, you can debug the server-side code and the client-side JavaScript code of your application in two modes:

  • Separately, using single-run configurations.
  • Simultaneously, using a complex Node.js with JavaScript Debug configuration. All you need is configure the behaviour of the browser and enable debugging the client-side code of the application. This functionality is provided through a JavaScript Debug run configuration, so technically, JetBrains Rider creates separate run configurations for the server-side and the client-side code, but you specify all your settings in one dedicated Node.js run configuration.

To create a compound Node.js/JavaScript Debug configuration

  1. Choose Run | Edit Configuration on the main menu.
  2. From the list, choose the Node.js run configuration to start together with a JavaScript Debug configuration. In the dialog box that opens, switch to the Browser / Live Edit tab.
  3. Select After launch to start a browser automatically when you launch a debugging session.
  4. In the text box below, type the URL address to open the application at.
  5. Choose the browser to use from the drop-down list next to the After launch checkbox.
    • To use the system default browser, choose Default.
    • To use a custom browser, choose it from the list. Note that Live Edit is fully supported only in Chrome.
    • To configure browsers, click Browse browseButton and adjust the settings in the Web Browsers dialog box that opens. For more information, see Configuring Browsers.
  6. Select With JavaScript debugger.

To enable Live Edit in a Node.js application

  1. Make sure the LiveEdit repository plugin is installed and enabled. The plugin is not bundled with JetBrains Rider, but it can be installed from the JetBrains plugin repository as described in Installing, Updating and Uninstalling Repository Plugins and Enabling and Disabling Plugins.
  2. Press Ctrl+Alt+S or choose File | Settings (for Windows and Linux) or JetBrains Rider | Preferences (for macOS) from the main menu, and then go to Build, Execution, Deployment | Debugger | Live Edit.
  3. Select Update Node.js application on changes. Set the elapsed time for applying the changes to a running application: accept the default value 300 ms or specify a custom value using the spin box next to the corresponding field.

Node.js multiprocess debugging

JetBrains Rider 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 window.

  1. Set the breakpoints in the processes to debug.
  2. Create a Node.js run/debug configuration.
  3. Choose the newly created configuration in the Select run/debug configuration drop-down list on the tool bar and click Debug debug.

    The Debug window opens and the Frames drop-down list shows the additional processes as threads as soon as they are launched:

    ws_node_multiprocess.png

    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.

Last modified: 19 April 2018

See Also