如何在命令行中运行/调试javascript

时间:2012-08-23 13:25:29

标签: javascript command-line v8

我在想(实际上我知道肯定有这样一种方式在命令行中运行js,因为当我观看谷歌I / 0演示时,他们使用像d8这样的命令,也许它是V8引擎的一部分)在那里在命令行中运行/调试我的javascripts的任何方法?比如d8 myJsfile.js --prof等?

有人对此有任何想法吗?

2 个答案:

答案 0 :(得分:3)

是的,D8是一个命令行工具,允许您运行和调试Javascript脚本。它配备了V8。

获取D8

在你的机器上安装V8并不难。请遵循以下说明: https://developers.google.com/v8/build

(GYP的部分看起来有点乱,但我在Linux机器上轻松搞定了。)

安装了V8后,您现在拥有了d8,它允许您从命令行运行javascript。

$ d8 myscript.js

使用D8

查看d8 --help的分析选项。这些与您在Chrome上使用性能分析时可以使用的选项非常相似。

如果要使用--debugger调试start d8。当脚本在代码中遇到语句debugger;或在d8 shell中键入debugger;时,脚本将会中断。 (通过使用--shell启动d8来获取shell。)当shell提示符从d8>转到dbg>时,您知道正在调试。要在help提示符下获得调试器类型dbg>的帮助。

d8调试器是一个旧式的命令行调试器,如果您习惯使用GUI调试器,那么在大型复杂脚本上使用它会很痛苦。

使用带有D8的GUI调试器

如果您想使用GUI调试器,可以使用Chrome DevTools for Java,其中包括Eclipse调试器:

https://code.google.com/p/chromedevtools/

让它运作起来:

  • 安装Eclipse
  • 安装ChromeDevTools插件(我从此视频获得了帮助:http://www.youtube.com/watch?v=_uzSw_fb7NQ
  • 创建“Standalone V8 VM”类型的新调试配置,设置host:localhost和端口:5858用于连接参数。

调试在D8中运行的代码:

  • 使用您的脚本和--debugger_agent启动D8,并根据您的配置启用--debugger_port; D8的默认端口是5858。
  • Eclipse中的
  • 启动您在上面创建的调试配置。脚本将显示在界面
  • 在Eclipse UI中设置断点并拥有它。 (您的代码中不需要debugger;个语句。)

请注意! D8仅侦听localhost上的调试器。所以如果你在一台单独的机器上,那么这将无法工作。没有标志可以让它在另一个IP上侦听。看到: https://code.google.com/p/v8/issues/detail?id=1855

在D8中运行Javascript的问题

请注意,D8中的Javascript环境与浏览器窗口中的Javascript环境不同。您无法使用许多功能:

  • setTimeout及其堂兄弟
  • 的XMLHttpRequest
  • 还有更多。检查ECMA规范以查看您实际可以使用的内容。

请记住,没有window.*document.*或DOM!

答案 1 :(得分:2)

Node.JS对此非常有用。

您将无法测试浏览器内容,例如window.location以及其他内容,但是对于运行直接脚本,它会很有帮助。