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

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

위의 코드를 실행하면 화면에 나타나는 모든 디버그 정보가 나에게 거의 의미가 없음을 알 수 있습니다. 호출되는 함수가 존재하지 않는다는 오류를 보길 기대하지만 거기에는 없습니다.내 casperjs에 오류가 표시되지 않는 이유는 무엇입니까?

내가 볼 때까지는 단지 동작이라고 생각했습니다. this.

ReferenceError: Can't find variable: $

가 왜 내 화면에이 같은 것을 볼 수 없습니다

문제는 분명히 그가 몇 가지 오류 메시지를 가지고 나타냅니다?

답변

2

PhantomJS 2.x를 사용하고 있습니다. 일부 오류가보고되지 않는 known bug이 있습니다. 여기에는 설명하는 오류 클래스가 포함됩니다.

또한, CasperJS/PhantomJS의 다양한 오류 이벤트에 등록하는 것은이 경우에 도움이되지 않습니다, 그러나 여기에서 그들은 단지의 경우에 있습니다

// 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)); 
    }; 
}); 

당신은 스크립트를 통해 eslint 또는 jshint 뭔가를 실행할 수 있습니다 구문 오류를 포착하고 이러한 종류의 오류를 잡기 위해 PhantomJS 1.9.8/1.9.7에서 스크립트를 실행할 수 있습니다.

관련 문제