Javascript casperjs未捕获错误:TypeError:试图分配给只读属性

Javascript casperjs未捕获错误:TypeError:试图分配给只读属性,javascript,casperjs,Javascript,Casperjs,有人知道我如何在casperjs中找到这个错误的原因吗?获取此信息时,我尝试运行的测试脚本是: var errors = []; casper.on("page.error", function(msg, trace) { this.echo("Error: " + msg, "ERROR"); this.echo("file: " + trace[0].file, "WARNING"); this.echo("line: " + trace[0].line,

有人知道我如何在casperjs中找到这个错误的原因吗?获取此信息时,我尝试运行的测试脚本是:

var errors = [];
casper.on("page.error", function(msg, trace) {
  this.echo("Error:    " + msg, "ERROR");
  this.echo("file:     " + trace[0].file, "WARNING");
  this.echo("line:     " + trace[0].line, "WARNING");
  this.echo("function: " + trace[0]["function"], "WARNING");
  errors.push(msg);
});

casper.on('resource.received', function(resource) {
    var status = resource.status;
    if(status >= 400) {
        casper.log('Resource ' + resource.url + ' failed to load (' + status + ')', 'error');

        errors.push({
            url: resource.url,
            status: resource.status
        });
    }
});



casper.test.begin('Are we online?', 3, function suite(test) {
    casper.start("http://www.google.com/", function() {
        test.assertTitle("Google", "Connected to google, internet connection probably ok");
    });

    casper.thenOpen("https://mysite", function() {
        test.assertTitle("Log On", "Connected to mysite, server is up");
        this.fill('form#logonForm', {
            'Name':    'user',
            'Password':    'pass',
        }, true);
    });

    casper.thenOpen("https://mysite/somepage", function() {    
        casper.test.assert(errors.length==0,'No js errors'); //THIS LINE SEEMS TO BE CAUSING THIS ERROR, NOT SURE WHY?
    });

    casper.run(function () {
        test.done();
    });
});
完整的错误消息是:

1个失败测试的详细信息: 在connect-to-production.js:1968中(没有这样的行,我的js文件中只有我在上面粘贴的行,远不及2000行)

我们在线吗?(我的测试名) uncaughtError:TypeError:试图分配给只读属性

在上面,它的行为与正常错误不同,表示没有堆栈跟踪。

找到了答案

如果您有一个测试套件,如: casper.test.begin(‘我们在线吗?’),4,功能套件(测试){

这意味着您在套件中必须有4个测试。如果添加或删除任何断言,您将收到此错误

我是casperjs的新手,多亏了Artjom B,他指导我如何在我不习惯的环境中进行调试。

找到了答案

如果您有一个测试套件,如: casper.test.begin(‘我们在线吗?’),4,功能套件(测试){

这意味着您在套件中必须有4个测试。如果添加或删除任何断言,您将收到此错误


我对casperjs是新手,感谢Artjom B,他告诉我如何在我不习惯的环境中进行调试。

错误可能是一个保留变量。它出现在哪里?你应该知道它出现在哪个页面上,以及它是否来自
页面。错误
回调以及页面中的哪一行等等。我从一个示例中得到了这个信息,该示例rks在其他上下文中使用,所以我认为错误不是一个保留变量,除非它只是在进行测试套件时使用?感谢您的帮助。我投了反对票,因为basic
console.log()
调试至少会显示抛出此错误的行。这里没有足够的信息帮助您。甚至不清楚错误是来自CasperJS代码还是页面(如果它来自页面,那么您的输出应该以
错误开始:
,但它不是。如果它来自CasperJS代码,那么它应该包含对casper.js的引用,但它不是。这是非常矛盾的!)。谢谢,修复了问题并找到了答案!错误可能是一个保留变量。它出现在哪里?您应该知道它出现在哪个页面上,以及它是否来自
页面。错误
回调以及页面中的哪一行等等。我是从一个在其他上下文中工作的示例中得到的,因此我认为错误不是保留变量,除非s只是在做测试套件?感谢您的帮助。我投了反对票,因为基本
console.log()
调试至少会显示抛出此错误的行。这里没有足够的信息来帮助您。甚至不清楚错误是来自CasperJS代码还是页面(如果它来自页面,那么您的输出应该以
错误开始:
,但它不是。如果它来自CasperJS代码,那么它应该包含对casper.js的引用,但它不是。这是非常矛盾的!)。谢谢,修复了问题并找到了答案!