Tôi đang gặp khó khăn trong việc hiểu cách PhantomJS xử lý lỗi.Xử lý lỗi PhantomJS
Tôi có một máy chủ Apache được cài đặt cục bộ đang chạy (xampp) và khi tôi truy cập theo cách thủ công "http://localhost/" Tôi nhận được thông báo "Hoạt động!" trang.
Là một thử nghiệm, tôi đã viết một tập tin nhỏ (gọi là forceError.js) mà cố tình gây ra một ngoại lệ được kiểm soát:
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();
});
Khi tôi chạy sử dụng này:
phantomjs.exe forceError.js
Trước tiên tôi nhận được " trạng thái: thành công "và sau đó quá trình chỉ bị treo. Tôi không thấy page.onError hoặc phantom.onError được gọi.
Có một số thuộc tính hoặc thứ gì đó tôi cần bật để xử lý lỗi chung không?
Tôi đang sử dụng Windows 7, PhantomJS phiên bản 2.0.0 và chạy trong vỏ "git bash" của tôi.
Có thể tốt hơn là sự cố trên GitHub. Có vẻ như một lỗi trong PhantomJS 2. –
@ArtjomB. Ý tưởng hay: https://github.com/lichunqiang/lichunqiang.github.io/issues/13 –
@ArtjomB. cảm ơn: https://github.com/ariya/phantomjs/issues/13403 –