node-inspector / node-inspector

Node.js debugger based on Blink Developer Tools
BSD 2-Clause "Simplified" License
12.66k stars 716 forks source link

Throwing exception on simple use case #905

Open westhomas opened 7 years ago

westhomas commented 7 years ago

First time using node-inspector. Here's my setup:

$ nvm --version
0.31.4
$ nvm current
v6.4.0
$ node --version
v6.4.0
$ npm install -g node-inspector

My simple test file:

//test.js
var d = {asdf: 123}
debugger;
console.log(d)

Firing up the debugger throws exception:

$ node-debug test.js
Node Inspector v0.12.8
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
Debugging `test.js`

Debugger listening on [::]:5858
/Users/wes/.nvm/versions/node/v6.4.0/lib/node_modules/node-inspector/lib/InjectorClient.js:111
      cb(error, NM[0].ref);
                     ^

TypeError: Cannot read property 'ref' of undefined
    at InjectorClient.<anonymous> (/Users/wes/.nvm/versions/node/v6.4.0/lib/node_modules/node-inspector/lib/InjectorClient.js:111:22)
    at /Users/wes/.nvm/versions/node/v6.4.0/lib/node_modules/node-inspector/lib/DebuggerClient.js:121:7
    at Object.create.processResponse.value (/Users/wes/.nvm/versions/node/v6.4.0/lib/node_modules/node-inspector/lib/callback.js:23:20)
    at Debugger._processResponse (/Users/wes/.nvm/versions/node/v6.4.0/lib/node_modules/node-inspector/lib/debugger.js:95:21)
    at Protocol.execute (_debugger.js:121:14)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:177:18)
    at Socket.Readable.push (_stream_readable.js:135:10)
    at TCP.onread (net.js:542:20)
javfindly commented 7 years ago

same issue here, in my case happens when I run Jest:

node-debug node_modules/jest-cli/bin/jest.js -i

Node Inspector v0.12.8 Visit http://127.0.0.1:8080/?port=5858 to start debugging. Debugging node_modules/jest-cli/bin/jest.js

Debugger listening on [::]:5858

/usr/local/lib/node_modules/node-inspector/lib/InjectorClient.js:112 cb(error, NM[0].ref); ^ TypeError: Cannot read property 'ref' of undefined at InjectorClient. (/usr/local/lib/node_modules/node-inspector/lib/InjectorClient.js:112:22) at /usr/local/lib/node_modules/node-inspector/lib/DebuggerClient.js:121:7

I've already checked, the NM object is an empty array

maherma-adg commented 7 years ago

I've the same issue, exception are thrown when connecting browser to :8080 port.

I think problem is related to node version, all works with node@6.3.1 and start failing when updated to node@6.4.0

All start working again after rolling back node to 6.3.1

pjww commented 7 years ago

I landed here after spending several hours trying to make things working.

Windows 7, Node 6.4.0 - x64 version.

When, after running node-inspector (or node-debug, or node --debug-brk, etc) I tried to go to the given address (with the GUI debugger with those devtools), the node proccess (and node-inspector proccess, if it was run separately) was crashing. No matter what I tried to do to solve it (downgrading node-inspector included).

In the cmd, the stack trace wasn't really helpful (some exceptions from events.js and something about TCP, sorry, didn't save them). I think they were the same as in javfindly's post.

From the browser, I could only learn that it had something to do with closed websocket and the inspector didn't worked at all (it was empty and console didn't work as well).

After using lynx1983's fix, I also noticed:

"No NativeModule in target scope."

After all, I downgraded Node to 6.3.1 and it's working.

LeandroFavero commented 7 years ago

Same problem

Virtual-Machine commented 7 years ago

I also have run into this issue.

code is looking for a property with name == "NativeModule" but on my machine it returns an array of the following properties for refs[result.object.ref].properties

[ { name: 'inspectorConsole', propertyType: 0, ref: 3 }, { name: 'wrapConsoleCall', propertyType: 0, ref: 3 }, { name: 'console', propertyType: 0, ref: 3 } ]

The error handling is not working in this area because NM[0] is an invalid reference based on the exclusion of NativeModule in the properties array...

if (!NM.length)
        error = new Error('No NativeModule in target scope');
cb(error, NM[0].ref);
brannon commented 7 years ago

Not necessarily a good long term fix, but I worked around the problem with the following change to node-inspector/lib/InjectorClient.js:

108       if (!NM.length) {
109         error = new Error('No NativeModule in target scope');
110         return cb(error);
111       }

The debugger loads successfully and I am able to debug my code.

reverofevil commented 7 years ago

:+1:

Downgrade to 6.3.1 helps. This is a regression,

ding444 commented 7 years ago

For anyone using homebrew and trying to get back to node 6.3.1 after you've already done a cleanup you can re-install 6.3.1 with:

brew install https://github.com/Homebrew/homebrew-core/raw/cc180c23b583487101a1b6697da4126739948dc5/Formula/node.rb

and then switch with:

brew switch node 6.3.1
thombaynes commented 7 years ago

Small addition to the above code - I had to unlink node first, then I could install and switch to 6.3.1. brew unlink node

ELLIOTTCABLE commented 7 years ago

Strangely, I see this with Node v6.2.1?

Meanwhile, has anybody tried @lynx1983's patch referenced above?

*Edit: Nope, no such luck. /= I just get the expected “No NativeModule in target scope” instead of an actual crash; but that's not more helpful. Agh!

Well, thank god for nvm: nvm install v6.3.1, problem solved. For now.

LeandroFavero commented 7 years ago

Same problem in 6.5.0

FJplant commented 7 years ago

I succeeded with this ticket.

Simply, yum remove nodejs yum install nodejs-6.3.1 worked for me. I use OEL 6.7 ( derivation of Redhat Enterprise Linux )

aknuds1 commented 7 years ago

Also fails for me. Node 6.5.0, Node Inspector v0.12.8 on OS X.

aknuds1 commented 7 years ago

Maybe this issue should be split into two, as it addresses two separate bugs? One is the bad handling of the error case, the error being that NativeModule isn't found. PR #914 fixes the first one, so it would definitely help to have an issue dedicated to the second bug.

kmkr commented 7 years ago

Those running 6.5.0 can use native node for the same purposes. It's an experimental feature, but it works fine for me.

node --inspect --debug-brk my-app.js.

Read more here.

gae123 commented 7 years ago

Thanks @kmkr but --inspect appears broken if you use the cluster API to fork workers, beware...

wzup commented 7 years ago

@kmkr

No they can't. node --inspect doesn't work on Windows 64 yet

timothyerwin commented 7 years ago

@wzup solution: stop using windows.

odnarb commented 7 years ago

Same issue. OS: Ubuntu 15.10

brandon@ubuntu:~$ uname -a
Linux ubuntu 4.2.0-35-generic #40-Ubuntu SMP Tue Mar 15 22:15:45 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
brandon@ubuntu:~$ cat /etc/*-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=15.10
DISTRIB_CODENAME=wily
DISTRIB_DESCRIPTION="Ubuntu 15.10"
NAME="Ubuntu"
VERSION="15.10 (Wily Werewolf)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 15.10"
VERSION_ID="15.10"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

Also using node 6.5.0 & npm 3.10.3 with linux brew. My colleague is using Ubuntu as well but nvm with same node/npm releases as mine. Same issue.

The hack @brannon suggested works for me for now.

santanu-biswas commented 7 years ago

Same problem with Node 6.5.0 on OSX El Capitan (Ver 10.11.6). Downgrading to 6.3.1 did not solve the problem!!

Node Inspector v0.12.8
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
/usr/local/lib/node_modules/node-inspector/lib/InjectorClient.js:111
      cb(error, NM[0].ref);
                     ^

TypeError: Cannot read property 'ref' of undefined
    at InjectorClient.<anonymous> (/usr/local/lib/node_modules/node-inspector/lib/InjectorClient.js:111:22)
    at /usr/local/lib/node_modules/node-inspector/lib/DebuggerClient.js:121:7
    at Object.create.processResponse.value (/usr/local/lib/node_modules/node-inspector/lib/callback.js:23:20)
    at Debugger._processResponse (/usr/local/lib/node_modules/node-inspector/lib/debugger.js:95:21)
    at Protocol.execute (_debugger.js:121:14)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:177:18)
    at Socket.Readable.push (_stream_readable.js:135:10)
    at TCP.onread (net.js:542:20)
ellerbrock commented 7 years ago

same problem here with:

Environment Information
========================
npm:         3.10.7
Node:        6.5.0
Electron:    1.3.5

MongoDB shell version: 3.2.8
Date: Mo 12 Sep 2016 03:45:28 ICT

i run node via nvm, with version 4x and 5x its working:

ok        Node v4.5.0
ok        Node v5.12.0
crash     Node v6.5.0

update [17. Sept 2016]

crash     Node v6.6.0

but crashes on current 6x with

▶ node-debug oop.js
Node Inspector v0.12.8
Visit http://127.0.0.1:8080/?port=5858 to start debugging.
Debugging `oop.js`

Error: listen EADDRINUSE :::5858
    at Object.exports._errnoException (util.js:1026:11)
    at exports._exceptionWithHostPort (util.js:1049:20)
    at Agent.Server._listen2 (net.js:1253:14)
    at listen (net.js:1289:10)
    at net.js:1399:9
    at _combinedTickCallback (internal/process/next_tick.js:77:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)
bhevesi commented 7 years ago

node-inspector is the most popular debug tool for Node. Based on statistic, more than 10k downloads in the last day. This open critical issue prevents using node v6.5.0 for developers. I really appreciate Your debug framework and all effort by node-inspector developers but more than 29 days delay to provide solution is not fair. I'm sorry!

CarlosLanderas commented 7 years ago

Same issue here:

Node version: v6.5.0 Npm version: 3.10.6 Node Inspector v0.12.8

cb(error, NM[0].ref); ^ TypeError: Cannot read property 'ref' of undefined

e-cloud commented 7 years ago

This is blocking issue!!! but seems like the team doesn't notice it. @3y3

loic294 commented 7 years ago

Same here Windows x64 Node : 6.6.0

Downgrade is not a solution for me! Hope it's gone be fixed soon...

tarol commented 7 years ago

same on win10 node v6.5.0

LeandroFavero commented 7 years ago

The lastest release was in April 8. I don't know the future about node-inspector, but I believe that will die. Because NodeJS incorporated the inspector. Try this using 6.6.0: node --inspect index.js

It's the same, but integrated and faster, really faster!!!

reverofevil commented 7 years ago

@LeandroFavero The problem is that hype on Node.js is over, and a lot of temporary solutions became permanent due to the lack of professional developers. Unfortunately --inspect is unstable and doesn't work for most of the interested users. I would expect node-inspector to disappear the same time as node-gyp would get Unicode support and drop Python from dependencies.

For the future commenters: consider using emoji reactions if you have the same setup as previous reporters. There're 2 messages a day with the same content, and it's annoying.

timothyerwin commented 7 years ago

@polkovnikov-ph why are you saying stuff like that? lack of professional developers? what is that based on? --inspect is new so they still need to patch it up. yes, it sucks that debugging isn't working out right now but they'll get it straightened out. it's unstable because the hype is real.

fcvidoto commented 7 years ago

im using windows 10 with node 6.6(before) ..

to solve this I uninstalled node and downloaded node 4.5 from the official nodejs site

hope this helps someone

bbones commented 7 years ago

node 6.6.0 mocha 2.5.3 same error...

adrian-moisa commented 7 years ago

Same issue win10 node v6.5.0

evelant commented 7 years ago

I also have the same issue on win10 node v6.6.0

reverofevil commented 7 years ago

@fignuts but what version of node.js are you using?

hlandao commented 7 years ago

same issue here, running in OSX, node v6.5.0

o0x2a commented 7 years ago

Same issue on Debain, Node.js: v6.4.0 NPM: 3.10.3 Node Inspector v0.12.8

/../.nvm/versions/node/v6.6.0/lib/node_modules/node-inspector/lib/InjectorClient.js:111
      cb(error, NM[0].ref);
                     ^

TypeError: Cannot read property 'ref' of undefined
    at InjectorClient.<anonymous> (/.../.nvm/versions/node/v6.6.0/lib/node_modules/node-inspector/lib/InjectorClient.js:111:22)

It works on node v6.3.1

hgwood commented 7 years ago

Just in case someone misses it; #906 fixes this problem. You can patch your installed copy to get it working while waiting for the next release.

e-cloud commented 7 years ago

@hgwood, nope, it doesn't fix the real problem. It just fix the uncatch error to output it properly. If you apply the fix, node-inspector will throw another error(No NativeModule in target scope)

hgwood commented 7 years ago

Well yes, it does throw that error, but only once it has started, in its console. I can still step through my code, which I could not do before.

e-cloud commented 7 years ago

In my case, with that error no more debugging. I don't know what's the problem though :(.

vird commented 7 years ago

See hack/workaround solution https://github.com/node-inspector/node-inspector/issues/928#issuecomment-249343838

yinhongyan commented 7 years ago

Comment out line 111, it works! image

rolanday commented 7 years ago

Same issue here -- node 6.7.0. Commenting out line 111 gets thinks working again as workaround. Thanks for suggesting!!

benduran commented 7 years ago

Tried upgrading to 6.7.0 in hopes this would be resolved. Still broken. 6.3.1 is the last working version for me on Win 10 Anniversary.

WebReflection commented 7 years ago

I don't understand why or how downgrading node version could solve the issue because this code is clearly bugged.

Of course if NM.length is 0 any access to its inexistent indexes properties like NM[0].ref would fail.

Accordingly, before even thinking about a possible PR, what should actually happen when NativeModule is not found? A warning? Another attempt? Would passing the error and just null, instead of throwing an error, be appropriate?

jeduden commented 7 years ago

Instead of commenting out. Fixed the issue with using: cb(error, NM[0] && NM[0].ref);

WebReflection commented 7 years ago

I've done the same but I don't know side effects, which is why I've asked what should happen. Also a PR would be better

On Thursday, 6 October 2016, jeduden notifications@github.com wrote:

Instead of commenting out. Fixed the issue with using: cb(error, NM[0] && NM[0].ref);

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/node-inspector/node-inspector/issues/905#issuecomment-251864127, or mute the thread https://github.com/notifications/unsubscribe-auth/AAFO9dj1PcF2i5dZJiOE40vKKE9Aim0kks5qxHh9gaJpZM4Jl714 .

jrcoimbra commented 7 years ago

Broken here too. Node 6.7.0 + MacOS Sierra.

Debugger listening on [::]:5858 /usr/local/lib/node_modules/node-inspector/lib/InjectorClient.js:111 cb(error, NM[0].ref); ^

TypeError: Cannot read property 'ref' of undefined

MasterJames commented 7 years ago

Here is a Pull Request to patch this ASAP https://github.com/node-inspector/node-inspector/pull/938

WebReflection commented 7 years ago

I've done a PR too but apparently nobody is maintaining this repo.

On Wednesday, 19 October 2016, Master James notifications@github.com wrote:

Here is a Pull Request to patch this ASAP

938 https://github.com/node-inspector/node-inspector/pull/938

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/node-inspector/node-inspector/issues/905#issuecomment-254692227, or mute the thread https://github.com/notifications/unsubscribe-auth/AAFO9cDZ2ALnyMIv0xiOAuugaorqtwvqks5q1X25gaJpZM4Jl714 .