运行脚本后自动关闭PhantomJs

时间:2012-06-24 19:43:35

标签: phantomjs

我想从我的程序运行PhantomJs脚本,但由于脚本可能不是由我编写的,我需要确保PhantomJs在执行完成后退出或因任何原因失败(例如,语法无效,超时,等等)。到目前为止,我读过的所有内容都说你必须始终包含PhantomJs指令phantom.exit()才能退出。有没有办法在执行给定脚本后自动关闭PhantomJs?

感谢。

1 个答案:

答案 0 :(得分:2)

创建文件 run-javascript.js

var system = require('system');

try {
  for (var i=1; i<system.args.length; i++) {
    var scriptFileName = system.args[i];
    console.log("Running " + scriptFileName + " ...");
    require(scriptFileName);
  }
}
catch(error) {
  console.log(error);
  console.log(error.stack);
}
finally {
  phantom.exit();
}

然后运行你的文件 myscript.js

phantomjs run-javascript.js ./myscript.js

您必须为 myscript.js 添加显式路径,即 ./ myscript.js ,否则 phantomjs 会查找脚本作为模块。

此处处理三种执行方案:

  1. 成功执行,在 finally 子句中调用 phantom.exit()
  2. 正在运行的脚本出错,在这种情况下, require 函数会打印堆栈跟踪并返回(不会向调用代码抛出任何错误)。
  3. 运行脚本时出错(例如它不存在),在这种情况下, catch 子句打印出堆栈跟踪,并在中调用 phantom.exit() 终于条款。