首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在node.js调试器中检查promises?

如何在node.js调试器中检查promises?
EN

Stack Overflow用户
提问于 2015-07-28 06:30:46
回答 2查看 1.4K关注 0票数 0

我已经用node.js写了一个应用程序。在主模块中,我使用cujojs的when module创建各种promises,并将它们放入一个数组中,然后使用when.all().then()在它们都实现时发送一条快乐的消息。当通过WebSocket连接接收到某些消息时,某些承诺就会得到解决。当WebSocket消息按特定顺序到达时,我会得到满意的消息。当消息以不同的顺序到达时,我得不到令人满意的消息。

所以我想看看main模块中的promises数组和其他变量。简单地调用调试器会导致"No Frame“错误,因此我设置了一个虚拟的”心跳“函数,该函数通过setInterval每秒调用一次。然后,当我在心跳函数中设置断点并尝试查看promises数组时,调试器告诉我它是未定义的(应该是模块范围的变量!)。所以我在心跳函数中放入了一行var pa = promises_array代码。然后我尝试在repl中使用when的inspect method,如下所示:

代码语言:javascript
复制
debug> repl
Press Ctrl + C to leave debug repl
> for( p in pa ){ console.log( p.inspect().state }

上面写着TypeError: Object 0 has no method 'inspect'

所以我不确定到底是怎么回事。为什么在模块中设置断点时看不到模块中的变量?

EN

回答 2

Stack Overflow用户

发布于 2015-07-28 06:50:37

尝试使用Node Inspector

Node Inspector允许您使用与在Chrome Developer Tools中调试前端应用程序几乎相同的方式来调试Node.js代码,包括使用调试器语句和设置断点。您可以在promise执行时一步一步地执行它。

票数 1
EN

Stack Overflow用户

发布于 2015-07-29 06:41:43

虽然使用node-inspector可能是个好主意,但在我的平台上设置它可能需要一段时间,而且我刚刚发现我的问题的实际正确答案是我应该在repl中输入以下内容

代码语言:javascript
复制
for( p in pa ){ console.log( 'marker '+p+' is '+pa[p].inspect().state ); }

换句话说,我是个笨蛋,因为我试图调用索引p上的方法,而不是索引p处的数组的值:"(

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31664436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档