javascript控制台的`binding.pry`?

Posted

技术标签:

【中文标题】javascript控制台的`binding.pry`?【英文标题】:`binding.pry` for javascript console? 【发布时间】:2013-06-10 09:09:09 【问题描述】:

在 Ruby 中,我可以在代码中的任何位置键入 binding.pry,在执行时,我的控制台将进入一个 REPL,我可以在其中访问所有局部变量、进行更改并执行任意代码。

例子:

# foo.rb
require 'pry'
n = 5
binding.pry
puts "your number is #n"

当我运行它时:

$ ruby foo.rb

From: /Users/cgenco/Desktop/foo.rb @ line 4 :

    1: # foo.rb
    2: require 'pry'
    3: n = 5
 => 4: binding.pry
    5: puts "your  number is #n"

[1] pry(main)> n = 100
=> 100
[2] pry(main)> exit
your number is 100

这是一个令人难以置信的调试工具,特别是对于需要复杂设置的情况:我可以在需要更多代码的地方输入binding.pry,搞砸,找出需要编写的代码,然后添加抛光代码到实际的源代码。

是否有类似 pry 的 javascript 工具可以在浏览器控制台中运行?

【问题讨论】:

【参考方案1】:

大多数浏览器都有与此非常相似的开发人员工具。

例如,在 Chrome 中,按 Ctrl+Shift+I 以调出开发者工具面板。单击“Sources”选项卡,您可以浏览任何已加载的 JavaScript 文件。从这里您可以通过单击左边距来设置断点。现在,当您重新加载页面时,JavaScript 执行将在您指定的行暂停。

在面板的底部有一个“显示控制台”按钮,它会打开一个 REPL,你可以玩弄。

这是我刚才提到的所有内容的截图:

在 Firefox、IE、Safari 和 Opera 中有类似的工具。只需 Google 搜索“开发者工具 [您选择的浏览器]”即可了解更多信息。

【讨论】:

太棒了,非常感谢,这是我第一次设法按照说明如何在js中设置类似pry的控制台,其他人只是困惑。【参考方案2】:

在您的代码中尝试使用debugger; 作为this answer suggests。您的浏览器开发工具必须打开。

【讨论】:

啊完美!这正是我一直在寻找的 - 不敢相信我还不知道它。 未来自我注意:在你的节点脚本中添加debugger,然后用node inspect SCRIPT.js运行它,然后输入“cont”并回车,然后当你的脚本点击@987654325 @line 它会停止。要输入 REPL,请输入“repl”并回车。【参考方案3】:

我想提一下,Node.js 有一个好东西叫做 Debugger。

超短教程:

    是这样运行您的应用程序:

node debug appname.js

    而不是通常的

node appname.js

帮自己一个忙,请参阅:https://nodejs.org/api/debugger.html 我发布此内容是因为在找到调试器工具之前,我发现了很多需要依赖关系的方法!

【讨论】:

【参考方案4】:

在问了这个问题 9 年后,我偶然发现了我正在寻找的东西:pryjs。

使用import pry from "pryjs"const pryjs = require("pryjs") 包含它,然后使用eval(pry.it) 而不是binding.pry 调用它。

它会按照您的预期工作。

【讨论】:

以上是关于javascript控制台的`binding.pry`?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript Geolocation API,SyntaxError: Unexpected Identifier in Chrome 的 Javascript 控制台

这个 JavaScript 是不是破坏了控制台?

从控制台调用 Javascript 函数

巧用控制台,提升JavaScript调试性能

javascript控制checked属性

如何知道何时从控制台调用 JavaScript 函数? [复制]