Phantomjs: O console.error grava em stderr?

Criado em 8 fev. 2014  ·  3Comentários  ·  Fonte: ariya/phantomjs

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.

Comentários muito úteis

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 !

Todos 3 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações