使用节点的内置调试器检查变量?

Inspecting variables using node's built-in debugger?

提问人:Merc 提问时间:12/18/2012 最后编辑:Matt BallMerc 更新时间:12/24/2022 访问量:21052

问:

我正在尝试使用节点调试器。 我正在运行我的服务器。然后我有:node debug server

...
var Workspace = mongoose.model('Workspace');
debugger;

此时,正如预期的那样,当我运行此代码时,会弹出调试器。 但是,我希望它设置了所有当前变量,就像在 Chrome 自己的调试器中发生的那样。

但:

break in hotplate/node_modules/bd/lib/bd.js:133
132 
133   debugger;
134 
135   // Delete the ID and the version since there's no point,
debug> Workspace
ReferenceError: Workspace is not defined

所以。。。如何实际检查当前变量?

额外问题:有没有办法使用 Chrome 的开发人员工具 (CTRL-J) 使其连接到节点并以这种方式工作?(我知道node-inspector,但它已经过时了,而且......

节点.js

评论


答:

88赞 Andrey Sidorov 12/18/2012 #1

使用命令(请参阅文档中的第三个示例repl )

break in hotplate/node_modules/bd/lib/bd.js:133
132 
133   debugger;
134 
135   // Delete the ID and the version since there's no point,
debug> repl
Press Ctrl + C to leave debug repl
> Workspace

更新:奖金问题 - https://github.com/c4milo/node-webkit-agent

评论

0赞 Merc 12/18/2012
奖金问题呢?:D
0赞 Andrey Sidorov 12/18/2012
不确定除了 node-inspector 之外是否有现成的解决方案,但您可以尝试使用 chrome 开发人员工具远程调试器 - developers.google.com/chrome-developer-tools/docs/...
2赞 NSjonas 5/7/2016
知道如何让它输出完整的变量而不是截断它吗?
2赞 Andrey Sidorov 5/7/2016
那是字符串吗?V8 调试器代理仅返回字符串的前 80 个字符,因此您必须选择其他部分( - 从索引 123 开始的子字符串)或要求调试对象输出它 (mystring.slice(123)console.log(mystring) )
5赞 Andy Gaskell 12/7/2018 #2

奖金问题的答案在2018年发生了变化。

跑。node inspect foo.js

访问,在设备列表中,您应该会看到一个条目,上面写着随附的检查链接。chrome://inspectTarget (<process.version>)

它看起来像这样:enter image description here

评论

4赞 Agamemnus 4/22/2019
这个问题的答案是什么?如何检查变量?
1赞 Stanley Ulili 12/24/2022 #3

可用于检查变量。它的速度要快得多,您不必切换到 REPL。exec

break in hotplate/node_modules/bd/lib/bd.js:133
132 
133   debugger;
134 
135   // Delete the ID and the version since there's no point,
debug> exec workspace