Throwing exception on simple use case #905

Open
westhomas opened this Issue Aug 16, 2016 · 62 comments

Projects

None yet
@westhomas

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

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

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

@lynx1983 lynx1983 added a commit to lynx1983/node-inspector that referenced this issue Aug 18, 2016
@lynx1983 lynx1983 Fix #905 exception 3a26df7
@pjww
pjww commented Aug 19, 2016 edited

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

Same problem

@Virtual-Machine

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
brannon commented Aug 21, 2016

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.

@polkovnikov-ph

👍

Downgrade to 6.3.1 helps. This is a regression,

@aturkewi aturkewi referenced this issue in learn-co-curriculum/javascript-intro-to-debugging Aug 24, 2016
Closed

`npm run debug-ide` does not work with node v. 6.4.0 #10

@ding444
ding444 commented Aug 24, 2016

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

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
Contributor
ELLIOTTCABLE commented Aug 30, 2016 edited

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.

@ELLIOTTCABLE ELLIOTTCABLE added a commit to ELLIOTTCABLE/node-inspector that referenced this issue Aug 30, 2016
@lynx1983 @ELLIOTTCABLE lynx1983 + ELLIOTTCABLE Fix #905 exception ae8197d
@LeandroFavero

Same problem in 6.5.0

@FJplant
FJplant commented Sep 4, 2016

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
aknuds1 commented Sep 7, 2016 edited

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

@aknuds1
aknuds1 commented Sep 7, 2016

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
kmkr commented Sep 7, 2016

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
gae123 commented Sep 7, 2016

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

@wzup
wzup commented Sep 8, 2016

@kmkr

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

@timothyerwin

@wzup solution: stop using windows.

@odnarb
odnarb commented Sep 10, 2016

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

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)
@dewdad dewdad added a commit to dewdad/node-inspector that referenced this issue Sep 11, 2016
@dewdad dewdad workaround for bug 905 c5edcd1
@ellerbrock
ellerbrock commented Sep 11, 2016 edited

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)
@gr2m gr2m referenced this issue in pouchdb/express-pouchdb Sep 12, 2016
Merged

remove incorrect dbname encoding (part 2) #378

@bhevesi
bhevesi commented Sep 14, 2016

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

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
e-cloud commented Sep 18, 2016

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

@loic294
loic294 commented Sep 18, 2016

Same here Windows x64
Node : 6.6.0

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

@tarol
tarol commented Sep 20, 2016 edited

same on win10
node v6.5.0

@LeandroFavero

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!!!

@polkovnikov-ph

@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

@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

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
bbones commented Sep 21, 2016

node 6.6.0
mocha 2.5.3
same error...

@adrian-moisa

Same issue
win10
node v6.5.0

@fignuts
fignuts commented Sep 22, 2016

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

@polkovnikov-ph

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

@hlandao
hlandao commented Sep 22, 2016

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

@code-guru

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
hgwood commented Sep 23, 2016

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
e-cloud commented Sep 23, 2016

@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
hgwood commented Sep 23, 2016

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
e-cloud commented Sep 23, 2016

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

@vird
vird commented Sep 24, 2016

See hack/workaround solution #928 (comment)

@yinhongyan

Comment out line 111, it works!
image

@rolanday
rolanday commented Oct 3, 2016

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

@benduran
benduran commented Oct 4, 2016

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
WebReflection commented Oct 5, 2016 edited

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
jeduden commented Oct 6, 2016

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

@WebReflection

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
#905 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAFO9dj1PcF2i5dZJiOE40vKKE9Aim0kks5qxHh9gaJpZM4Jl714
.

@crwhitesides crwhitesides referenced this issue in learn-co-curriculum/js-basics-readme Oct 6, 2016
Open

Debugging issue if using latest version of node AND working locally #22

@raiteki
raiteki commented Oct 7, 2016

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

@WebReflection WebReflection added a commit to WebReflection/node-inspector that referenced this issue Oct 7, 2016
@WebReflection WebReflection Avoid NodeJS 6.7.0 error
This change fixes #905 + it avoids first argument reassignment.
992b51c
@erikrose erikrose added a commit to mozilla/fathom that referenced this issue Oct 10, 2016
@erikrose erikrose Stop using node-inspector, which is broken for recents node versions.
node-inspector/node-inspector#905

This is a real drag, because the node debugger lacks simple affordances like seeing return values.
de7c081
@mdotasia mdotasia referenced this issue in webdriverio/webdriverio Oct 12, 2016
Open

Debugging with node-inspector fails #1640

@MasterJames

Here is a Pull Request to patch this ASAP
#938

@WebReflection

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 #938


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
#905 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAFO9cDZ2ALnyMIv0xiOAuugaorqtwvqks5q1X25gaJpZM4Jl714
.

@hgwood
hgwood commented Oct 19, 2016

Note that some (all?) node-inspector features are now built into Node: nodejs/node#6792. See the --inspect command-line option.

@polkovnikov-ph

@WebReflection It's a bit strange to agree with you, but you're totally correct. It was at least 2 months without a word from a maintainer. The last commit was in April. Looks like native Node's support is anticipated for a long time.

@MasterJames
MasterJames commented Oct 19, 2016 edited

Okay I thought there must be something else people are using now. That makes sense, thanks.
node --inspect your.js
seems to be integrated now.
[note: you'll wanna uninstall node-inspector now then.]

@joelkoz
joelkoz commented Oct 20, 2016

Also - add the "--debug-brk" option to "--inspect" and the debugger will pause execution until after you connect:

node --inspect --debug-brk your.js

You can then start execution from inside the debugger (after setting any necessary breakpoints).

@AndreSteenveld AndreSteenveld added a commit to AndreSteenveld/node-inspector that referenced this issue Oct 31, 2016
@AndreSteenveld AndreSteenveld Added this fix as suggested in #905 b34f941
@colthreepv

Using node --inspect is not really a solution for everyone, for instance I am trying to debug an already alive process sending it a USR1 signal to activate debug port

AFAIK this is not supported yet.

@venkateshilango7 venkateshilango7 referenced this issue Nov 12, 2016
Open

bug #948

@miroslawmajka

Beating the dead horse here but we had to go back to Node v.4.6.1 to get node-inspector working again. This is the setup:

Windows 10
Node v.4.6.1
Npm: 2.15.9
Node Inspector v.0.12.8

This setup works as of today and unless there is an explicit message in the Node or the Inspector changlog one day saying that they fixed this spcific issue we are sticking with this setup. Here's the download link for the old Node if anyone wants it: v.4.6.1.

@WebReflection

@miroslawmajka FYI 6.3.1 should work too. It's the latest version of node 6 that wasn't instantly crashing.

@leo-lai
leo-lai commented Nov 24, 2016

I also have the same issue on win7
node v6.7.0

@hilongjw

I got seem issue with macOS and Nodejs 6.9.1

/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:172:18)
    at Socket.Readable.push (_stream_readable.js:130:10)
    at TCP.onread (net.js:542:20)
@simonbaker

me too.
我安装了node 6.3.1版本就好了。。。

@gcoombe gcoombe added a commit to gcoombe/node-inspector that referenced this issue Dec 2, 2016
@gcoombe gcoombe Fix error caused by node-inspector#905 713dd02
@Bargamut
Bargamut commented Dec 13, 2016 edited

Hi!

It's my first steps in Node.js. =j
I've the same issue:

node --debug server.js
node-inspector

Node 6.9.2
and
Node 7.2.1

On the page:

"Detached from the target by reason: websocket_closed"

In console:

/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:172:18)
    at Socket.Readable.push (_stream_readable.js:130:10)
    at TCP.onread (net.js:542:20)

PS:
node -inspect server.js - success:

node --inspect echoserver.js 
Debugger listening on port 9229.
Warning: This is an experimental feature and could change at any time.
To start debugging, open the following URL in Chrome:
    chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/10f1f810-c0fb-4ca4-aa31-77b221d326e8

My IDE (PhpStorm + Node.js plugin) runs debug mode like this:

/usr/local/bin/supervisor --debug-brk=47773 --expose_debug_as=v8debug /home/bargamut/projects/testNodejs/server/server.js

It works too.

@maithreya
maithreya commented Dec 22, 2016 edited

node: v6.9.1
osx: 10.12.2 sierra

screen shot 2016-12-21 at 11 37 06 pm
screen shot 2016-12-21 at 11 37 25 pm

It works for me 💯 . I know this is not a right fix but works temporarily :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment