3

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

谢谢。

4

1 回答 1

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子句打印出堆栈跟踪,并且在finally子句中调用phantom.exit() 。
于 2013-08-26T22:24:42.293 回答