--- title: Debugging layout: default toc: true --- # Debugging Add the options in the `Support for debugging NodeJS tests` section from https://github.com/bazelbuild/rules_nodejs/blob/master/common.bazelrc to your project's `.bazelrc` file to add support for debugging NodeJS programs. Using the `--config=debug` command line option with bazel will set a number of flags that are specified there are useful for debugging. See the comments under `Support for debugging NodeJS tests` for details on the flags that are set. Use `--config=debug` with `bazel test` as follow, ``` bazel test --config=debug //test:... ``` or with `bazel run`, ``` bazel run --config=debug //test:test1 ``` to also turn on the NodeJS inspector agent which will break before any user code starts. You should then see, ``` Executing tests from //test:test1 ----------------------------------------------------------------------------- Debugger listening on ws://127.0.0.1:9229/3f20777a-242c-4d18-b88b-5ed4b3fed61c For help, see: https://nodejs.org/en/docs/inspector ``` when the test is run. To inspect with Chrome DevTools 55+, open `chrome://inspect` in a Chromium-based browser and attach to the waiting process. A Chrome DevTools window should open and you should see `Debugger attached.` in the console. See https://nodejs.org/en/docs/guides/debugging-getting-started/ for more details. ## Debugging with VS Code With the above configuration you can use VS Code as your debugger. You will first need to configure your `.vscode/launch.json`: ``` { "type": "node", "request": "attach", "name": "Attach nodejs_binary", "internalConsoleOptions": "neverOpen", "sourceMapPathOverrides": { "../*": "${workspaceRoot}/*", "../../*": "${workspaceRoot}/*", "../../../*": "${workspaceRoot}/*", "../../../../*": "${workspaceRoot}/*", "../../../../../*": "${workspaceRoot}/*", // do as many levels here as needed for your project } ``` We use `sourceMapPathOverrides` here to rewrite the source maps produced by `ts_library` so that breakpoints line up with the source maps. Once configured start your process with ``` bazel run --config=debug //test:test1 ``` Then hit `F5` which will start the VS Code debugger with the `Attach nodejs_binary` configuration. VS Code will immediatenly hit a breakpoint to which you can continue and debug using all the normal debug features provided.