Мне сложно понять, как PhantomJS обрабатывает ошибки.
У меня есть локально установленный сервер Apache (xampp), и когда я вручную нахожу " http://localhost/" Я получаю "Это работает"!" стр.
В качестве теста я написал небольшой файл (называемый forceError.js), который специально вызывает исключение:
var page = require('webpage').create(),
url = 'http://localhost/';
page.onError = function(msg, trace) {
console.log("page.onError");
var msgStack = ['ERROR: ' + msg];
if (trace && trace.length) {
msgStack.push('TRACE:');
trace.forEach(function(t) {
msgStack.push(' -> ' + t.file + ': ' + t.line + (t.function ? ' (in function "' + t.function +'")' : ''));
});
}
console.error(msgStack.join('\n'));
};
phantom.onError = function(msg, trace) {
console.log("phantom.onError");
var msgStack = ['PHANTOM ERROR: ' + msg];
if (trace && trace.length) {
msgStack.push('TRACE:');
trace.forEach(function(t) {
msgStack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line + (t.function ? ' (in function ' + t.function +')' : ''));
});
}
console.error(msgStack.join('\n'));
phantom.exit(1);
};
page.open(url, function (status) {
console.log("status: " + status);
// an undefined function
thisShouldForceAnError();
});
Когда я запускаю это, используя:
phantomjs.exe forceError.js
Сначала я получаю "статус: успех", а затем процесс просто зависает. Я не вижу ни вызова page.onError, ни phantom.onError.
Есть ли какое-то свойство или что-то, что мне нужно для включения общей обработки ошибок?
Я нахожусь в Windows 7, PhantomJS версии 2.0.0 и запускаю это в своей оболочке git bash.