Автоматически закрывать PhantomJs после запуска скрипта

Я хочу запускать сценарии PhantomJs из своей программы, но, поскольку сценарии могут быть написаны не мной, мне нужно убедиться, что PhantomJs завершает работу после завершения выполнения или сбоя по какой-либо причине (например, неверный синтаксис, тайм-аут и т. д.). До сих пор все, что я читал, говорит, что вы всегда должны включать инструкцию phantom.exit() для выхода PhantomJs. Есть ли способ автоматически закрыть PhantomJs после выполнения данного скрипта?

Спасибо.


person Jesus Diaz    schedule 24.06.2012    source источник


Ответы (1)


Создайте файл 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. Успешное выполнение, и в этом случае phantom.exit() вызывается в предложении finally.
  2. Ошибка в выполняемом скрипте. В этом случае функция require распечатывает трассировку стека и возвращает результат (без выдачи какой-либо ошибки вызывающему коду).
  3. Ошибка запуска сценария (например, он не существует). В этом случае предложение catch распечатывает трассировку стека, а phantom.exit() вызывается в наконец пункт.
person Philip Dorrell    schedule 26.08.2013