javascript – PhantomJS错误处理

前端之家收集整理的这篇文章主要介绍了javascript – 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”shell.

解决方法

在MacOS上测试并且经历了完全相同的行为,这确实有点不直观,很可能只是一个错误.奇怪的是,如果从最大范围的phantom.onError调用一个未定义的函数正确调用1.

作为一种解决方法,您可以使用try / catch来打包回调的正文.希望它会做这个工作.

只是为了澄清:如果在执行请求页面代码时发生错误(而不是幻像脚本本身),则调用page.onError.
我一直依靠page.onError一段时间,似乎工作相当稳定. (虽然有些错误只发生在phantomjs引擎中,但不在普通浏览器中.)

1实际上:“phantom.onError”无限制地打印在控制台上,因为phantomjs不支持console.error.

猜你在找的JavaScript相关文章