Error when calling NodeInspectToggleBreakpoint
:NodeInspectRun
Error detected while processing function nodeinspect#NodeInspectRun[13]..<SNR>203_NodeInspectStart:
line 75:
E716: Key not present in Dictionary: watches
E116: Invalid arguments for function keys
E15: Invalid expression: keys(s:session["watches"])
:NodeInspectToggleBreakpoint
Error detected while processing function OnNodeNvimMessage[1]..OnNodeMessage[21]..<SNR>198_breakpointResolved[23]..<SNR>198_addBrkptSign:
line 2:
E155: Unknown sign: visbkpt
While I'm getting the errors and the signs aren't showing up on the vim window, it looks like the breakpoint is still set, and I can use the terminal buffer to explore variables through repl.
Wondering if this issue occurs because of working with typescript files instead of js ones.
Using nodemon with the following nodemon.json config:
{
"watch": ["src"],
"ext": "ts",
"ignore": ["src/**/*.spec.ts"],
"exec": "node --inspect=0.0.0.0:9229 --require ts-node/register ./src/index.ts",
"verbose": true
}
It could be ts, though In a glance I suspect the problem is in the session file (which stores the session between vim instances) or compatibility. Can you post your session file (its in ~/.vim/plugged/vim-node-inspect/vim-node-session.json) and version (:version output)? cheers
@eliba2 thanks for the quick reply
vim-node-session
{"watches": {}, "breakpoints": {"/home/dori/Projects/Work/project/api_server/src/resolvers.ts": {"8": 5}}}
or
{"watches": {}, "breakpoints": {}}
neovim :version
NVIM v0.4.3
Build type: Release
LuaJIT 2.0.5
Compilation: /usr/bin/cc -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -O2 -DNDEBUG -DMIN_LOG_LEVEL=3 -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-
prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fdiagnostics-color=always -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -I/build/neovim/src/b
uild/config -I/build/neovim/src/neovim-0.4.3/src -I/usr/include -I/build/neovim/src/build/src/nvim/auto -I/build/neovim/src/build/include
Compiled by builduser
Features: +acl +iconv +tui
See ":help feature-compile"
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "/usr/share/nvim"
Run :checkhealth for more info
node.js debugger Version from breakpoint:
>> version
8.1.307.31-node.33
Other bug: executing c in the terminal buffer doesn't exit the shell. I can confirm that the node process continued as expected, and if I try executing other commands afterwards, I get an error
>> c
>> c
Uncaught Error: Can only perform operation while paused. - undefined
at _pending.<computed> (/home/dori/.vim/plugged/vim-node-inspect/node-inspect/lib/internal/inspect_client.js:250:27)
at Client._handleChunk (/home/dori/.vim/plugged/vim-node-inspect/node-inspect/lib/internal/inspect_client.js:215:11)
at Socket.emit (events.js:315:20)
at Socket.EventEmitter.emit (domain.js:485:12)
at addChunk (_stream_readable.js:302:12)
at readableAddChunk (_stream_readable.js:278:9)
at Socket.Readable.push (_stream_readable.js:217:10)
at TCP.onStreamRead (internal/stream_base_commons.js:186:23) {
code: -32000
}
I'd expect the terminal prompt to disappear after executing the first c
the session and the :version output looks ok; I'll need to run a ts setup to try this. About the second issue, repl commands were not going through the plugin hence the state is not reflected in the editor. I've fixed that in the latest. cheers
Yes, I could see the vim marks on js files, so definitely something to do with ts. Looking forward to your fix :) Your project is awesome, totally underrated :+1:
Thanks, Yes I can confirm it is because of ts; the breakpoints are set on a js file which needs to be resolved to a ts location (probably using sourcemaps). It requires additional effort; once I'll estimate that I will set a resolution for this.
I'm getting a message similar to the first message noted above. The error appears to be in the access to "watches" is in NodeInspectStart(). I successfully squelched the error by wrapping it in a has_key check, but that may be treating the symptoms rather than the problem, if s:session["watches"] should always be set and isn't for some reason. My session file looks the same as the empty one posted above.
Here's my squelching patch:
in vim-node-inspect/ on master
› git diff -u
diff --git a/autoload/nodeinspect.vim b/autoload/nodeinspect.vim
index 72c28ea..122710d 100644
--- a/autoload/nodeinspect.vim
+++ b/autoload/nodeinspect.vim
@@ -599,10 +599,11 @@ function! s:NodeInspectStart()
endif
endif
" redraw the watch window; draws any watches added from the session
- for watch in keys(s:session["watches"])
- call nodeinspect#watches#AddBulk(s:session["watches"])
- endfor
-
+ if has_key(s:session, "watches")
+ for watch in keys(s:session["watches"])
+ call nodeinspect#watches#AddBulk(s:session["watches"])
+ endfor
+ endif
endfunction
Hmm, I also get a similar message to above ("Unknown sign: vis" for me) but I am not using typescript at all, although there may be some babeling going on, I'm not sure what my test runner is getting up to to be honest.
hi,
it seems nodeinspect#OnNodeInspectEnter autocmd is not called for some reason. It sets up the watches and icons upon vim startup (see last line in plugin/nodeinspect.vim).
It seems the plugin/nodeinspect.vim file is processed (as you wouldn't able to call any command if it wasn't), just the autocmd is not. The possible reason for it is a presence of another plugin which overrides the VimEnter command. E.g., if a plugin defines a VimEnter autocmd command such as
autocmd VimEnter * call myfunc1()
and then another plugin adds similar call with an ! at the end:
autocmd! VimEnter * call myfunc2()
The last call will remove the first autocmd call. This hypotheses can be checked by running :autocmd VimEnter and checking if the call to nodeinspect#OnNodeInspectEnter is there. If that's the case (and also if its not) its better to wrap the autocmd command with an augroup to avoid this. I'll add it.