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.
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", "resolveSourceMapLocations": null, "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.