Мне сложно понять, как PhantomJS обрабатывает ошибки.Обработка ошибок 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».
Может быть лучше, как проблема на GitHub. Похоже на ошибку в PhantomJS 2. –
@ArtjomB. Хорошая идея: https://github.com/lichunqiang/lichunqiang.github.io/issues/13 –
@ArtjomB. Спасибо: https://github.com/ariya/phantomjs/issues/13403 –