Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chrome Devtools Dedicated Node.js Inspector not stopping at breakpoints

There have been a couple of older posts regarding this issue, but date from questions asked in 2013 and 2014 and the answers in there have not helped my case.

I have the debugger keyword placed in multiple places in my file, and have even added manual breakpoints in the inspector UI. Still, executing the file does not stop at any breakpoints. I am using node 9.2.0 and chrome 64.0.3282.167.

Here is a picture of how my devtools appears.enter image description here

like image 451
Govind Rai Avatar asked Feb 26 '18 18:02

Govind Rai


People also ask

Can you debug Node JS application in Chrome DevTools How?

Using Google Chrome DevTools to Debug To start debugging, let's run our application with the --inspect-brk flag. The next step is to head to Chrome, open a new tab, and enter the URL chrome://inspect/ . Click on “Open dedicated DevTools for Node” to start debugging the application.

How do I add a conditional breakpoint in DevTools?

To set a conditional breakpoint, activate the context menu in the source pane, on the line where you want the breakpoint, and select “Add Conditional Breakpoint”. You'll then see a textbox where you can enter the expression. Press Return to finish.

How do you set breakpoints in Nodejs?

When debugging in Node. js, we add a breakpoint by adding the debugger keyword directly to our code. We can then go from one breakpoint to the next by pressing c in the debugger console instead of n . At each breakpoint, we can set up watchers for expressions of interest.


Video Answer


3 Answers

This is a problem that has been extremely annoying to me since 10.13 went to LTS and I upgraded from 8 to 10.

I was unable to find anything about this issue until I saw this question here on stack overflow, that was the catalyst I needed to be able find more about the problem and discover the cause and the solution.

You can find out more here: https://github.com/nodejs/node/issues/23693

The Why: Basically it is because of a change to the debugger protocol in Node.

The Solution: Upgrade Chrome to 71 or later which supports the change in the protocol.

Much Better Solution: Install NIM: https://chrome.google.com/webstore/detail/nodejs-v8-inspector-manag/gnhhdgbaldcilmgcpfddgdbkhjohddkj then go to the NIM settings and change the selected DevTools version to the one from chrome-devtools-frontend.appspot.com ( see more about this option here: https://june07.com/blog/nim-custom-devtools-url/ )

like image 196
Dan Willett Avatar answered Oct 24 '22 10:10

Dan Willett


Use the --inspect-brk flag instead

I ended up opening up an issue on the devtools protocol github page.

I got an immediate answer. Basically, because I was using the --inspect flag to start the Node.js debugger, my JavaScript was being executed before the debugger process was connecting to the DevTools server. Therefore breakpoint information would be relayed too late and no breakpoints would be triggered.

Example: node --inspect-brk myscript.js

They're currently trying to improve this use case. Here's the actual reply:

We are working on better workflow here but for now --inspect-brk is only one way. With --inspect-brk node waits DevTools frontend connection. On connection DevTools send all breakpoints information and starts JavaScript execution in node. With --inspect node starts JavaScript execution without waiting for DevTools frontend. As soon as DevTools connected, we send the same breakpoint information to node but it can be too late since some JavaScript is already executed.

The Node.js docs are not very clear on this subtlety as of 4/6/2018. I will submit a PR on their repo to update the docs. BTW, if you are not aware, even without the V8 integration, the built-in debugger is very powerful. Explore all the possibilities of the debugging utility in the docs.

like image 41
Govind Rai Avatar answered Oct 24 '22 11:10

Govind Rai


I have this issue too: Chrome Devtools Inspector not stopping at breakpoints.

My problematic software versions:

  • Chrome: Version 70.0.3538.77 (Official Build) (64-bit)
  • Node: v10.12.0

A workaround I found is to downgrade NodeJS to version 8.12.0 (the latest 8.x version). Node version 8.x works for me.

$ node -v
v8.12.0

I also tried Node version 10.13.0, 11.1.0, none of them works for me.

FYI: How to change Node version

like image 4
Yuci Avatar answered Oct 24 '22 10:10

Yuci