Olá,
Usando o último phantomjs 1 9 7, não consigo escrever em stderr usando console.err.
No script de front end
throw "some errors";
No script do fantasma
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.onError = function(msg, trace) {
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'));
};
isso funciona
var phantomjsprocess = require('child_process').execFile(phantomjs.path, childArgs);
phantomjsprocess.stdout
.on('data', function (data) {
grunt.verbose.writeln(data.trim());
})
// having some difficuties to pass phantomjs errors to stderr, so listens to stdout for errors
.on('data', function (data) {
if( data.match(/^(ERROR: )/) ){
grunt.log.writeln(data.trim());
}
});
isso não é, ou parece que não.
var phantomjsprocess = require('child_process').execFile(phantomjs.path, childArgs);
phantomjsprocess.stderr
.on('data', function (data) {
grunt.log.writeln(data.trim());
});
Eu li a edição # 10232. É exatamente meu problema, mas até agora, não consigo fazê-lo funcionar.
Você tem alguma dica?
obrigado.
Fechamento como duplicata de https://github.com/ariya/phantomjs/issues/10150
Oh, desculpe, eu perdi ... Obrigado por apontar.
Para as próximas pessoas,
adicione este snippet ao invólucro do phantomjs
console.error = function () {
require("system").stderr.write(Array.prototype.join.call(arguments, ' ') + '\n');
};
Em seguida, ouça o stderr do seu processo filho.
Testado em phantomJS1.9. 7 @ ubuntu13
Funciona como um encanto !
@maboiteaspam Eu roubei seu snippet e joguei em https://github.com/sotownsend/BooJS para stderr por padrão em console.error.
Comentários muito úteis
Oh, desculpe, eu perdi ... Obrigado por apontar.
Para as próximas pessoas,
adicione este snippet ao invólucro do phantomjs
Em seguida, ouça o stderr do seu processo filho.
Testado em phantomJS1.9. 7 @ ubuntu13
Funciona como um encanto !