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

Lih*_*Qiu 4 javascript command-line v8

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

有人对此有任何想法吗?

tel*_*ber 5

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

获得 D8

在您的机器上安装 V8 并不难。请按照以下说明操作:https : //developers.google.com/v8/build

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

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

$ d8 myscript.js
Run Code Online (Sandbox Code Playgroud)

使用 D8

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

如果你想调试启动 d8 --debugger。当脚本遇到debugger;代码中的语句时,或者debugger;在 d8 shell 中键入时,脚本将中断。(您可以通过以 开头 d8 来获取 shell --shell。)当 shell 提示符从d8>到时,您就知道您正在调试dbg>helpdbg>提示符下获取有关调试器类型的帮助。

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”类型的调试配置,为连接参数设置主机:本地主机和端口:5858。

要调试在 D8 中运行的代码:

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

笔记!D8 只侦听本地主机上的调试器。所以如果你在一台单独的机器上,那么这将不起作用。没有标志可以让它侦听另一个 IP。请参阅:https : //code.google.com/p/v8/issues/detail?id=1855

在 D8 中运行 Javascript 的陷阱

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

  • setTimeout 及其同类
  • XMLHttpRequest
  • 还有很多。检查 ECMA 规范以了解您实际可以使用的内容。

记住没有window.*ordocument.*或 DOM!


Bra*_*rad 2

Node.JS在这方面确实很可靠。

您将无法测试浏览器的东西,例如window.location什么,什么不是,但对于运行直接脚本,它是有帮助的。