2016-06-29 21 views
0
var casper = require('casper').create({ 
    logLevel:'deubg', 
    verbose:true, 
}); 

casper.start(someurl,function(){ 
    not_existing_function(); 
}) 

Wenn ich obigen Code ausführe, sehe ich auf dem Bildschirm nur Debug-Informationen, die für mich sehr wenig bedeuten. Ich erwarte einen Fehler, der besagt, dass die aufgerufene Funktion nicht existiert, aber nicht.Warum zeigt mein Casperjs keine Fehler an?

Ich dachte, es war nur das Verhalten, bis ich this sehe.

Die Frage zeigt deutlich, er eine Fehlermeldung erhalten hat:

ReferenceError: Can't find variable: $

Warum kann ich nicht so etwas wie dieses auf meinem Bildschirm sehen?

Antwort

2

Sie verwenden wahrscheinlich PhantomJS 2.x. Es hat eine known bug, in der einige Fehler nicht gemeldet werden. Dazu gehört die Klasse von Fehlern, die Sie beschreiben.

Auch von CasperJS/PhantomJS zu den verschiedenen Fehlerereignisse Registrierung hilft nicht, in diesem Fall, aber hier sind sie nur für den Fall:

// http://phantomjs.org/api/phantom/handler/on-error.html 
phantom.onError = function(msg, trace) { 
    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); 
}; 

// http://docs.casperjs.org/en/latest/events-filters.html#remote-message 
casper.on("remote.message", function(msg) { 
    this.echo("Console: " + msg); 
}); 

// http://docs.casperjs.org/en/latest/events-filters.html#page-error 
casper.on("page.error", function(msg, trace) { 
    this.echo("Error: " + msg); 
    // maybe make it a little fancier with the code from the PhantomJS equivalent 
}); 

// http://docs.casperjs.org/en/latest/events-filters.html#resource-error 
casper.on("resource.error", function(resourceError) { 
    this.echo("ResourceError: " + JSON.stringify(resourceError, undefined, 4)); 
}); 

// http://docs.casperjs.org/en/latest/events-filters.html#page-initialized 
casper.on("page.initialized", function(page) { 
    // CasperJS doesn't provide `onResourceTimeout`, so it must be set through 
    // the PhantomJS means. This is only possible when the page is initialized 
    page.onResourceTimeout = function(request) { 
     console.log('Response Timeout (#' + request.id + '): ' + JSON.stringify(request)); 
    }; 
}); 

Sie können so etwas wie eslint oder jshint über das Skript ausführen Um Syntaxfehler zu finden, können Sie Ihr Skript in PhantomJS 1.9.8/1.9.7 ausführen, um diese Art von Fehlern zu erkennen.

Verwandte Themen