Existe um método para imprimir no console sem uma nova linha à direita? A documentação doconsole
objeto não diz nada sobre isso:
console.log()
Imprime em stdout com nova linha. Esta função pode receber vários argumentos de
printf()
maneira semelhante. Exemplo:console.log('count: %d', count);
Se os elementos de formatação não forem encontrados na primeira sequência,
util.inspect
será usado em cada argumento.
node.js
console
console.log
Evan Carroll
fonte
fonte
console.log
estava imprimindo\n
literalmente quando queria imprimir um caractere de nova linha.` followed by an
, quando queria gerar um caractere de nova linha real.Além disso, se você quiser sobrescrever mensagens na mesma linha, por exemplo, em uma contagem regressiva, poderá adicionar '\ r' no final da string.
fonte
process.stdout.write("Downloading " + data.length + " bytes\033[0G");
\033
com o literal hex\x1b
assim:\x1b[0G
. (que funciona tanto com código rigorosa e não-estrito)No console do Windows (Linux também), você deve substituir
'\r'
por seu código equivalente\033[0G
:Isso usa uma sequência de escape do terminal VT220 para enviar o cursor para a primeira coluna.
fonte
[\] 39
e o cursor é destacado no primeiro caracter:var spinner = '|/-\\'.split('');process.stdout.write("["+this.randomElement(spinner)+"] "+message+"\033[0G");
man console_codes
(no Linux ou online) e minha referência favorita é www2.phys.canterbury.ac.nz/dept/docs/manuals/unix/DEC_4.0e_Docs/… (99% de seu conteúdo ainda funciona) . Apenas ressalva: esteja preparado para testar qualquer experimento em vários terminais diferentes antes de implantar amplamente.Como uma expansão / aprimoramento da brilhante adição feita por @rodowi acima em relação à possibilidade de substituir uma linha:
Se você não deseja que o cursor do terminal esteja localizado no primeiro caractere, como vi no meu código, considere o seguinte:
Colocando-o
\r
na frente da próxima instrução de impressão, o cursor é redefinido antes que a sequência de substituição substitua a anterior.fonte
util.print também pode ser usado. Leia: http://nodejs.org/api/util.html#util_util_print
Um exemplo:
fonte
util.print
está obsoleto agora(node:7616) DeprecationWarning: util.print is deprecated. Use console.log instead.
Parece haver muitas respostas sugerindo:
Os logs de erro devem ser emitidos em:
Em vez disso, use:
Para quem se pergunta por que
process.stdout.write('\033[0G');
não estava fazendo nada, é porquestdout
está armazenado em buffer e você precisa aguardar odrain
evento ( mais informações ).Se a gravação retornar,
false
ela disparará umdrain
evento.fonte
Nenhuma dessas soluções funciona para mim,
process.stdout.write('ok\033[0G')
e apenas usando'\r'
apenas crie uma nova linha, mas não a substitua no Mac OSX 10.9.2.EDIT: Eu tive que usar isso para substituir a linha atual:
fonte
Eu recebi o seguinte erro ao usar o modo estrito:
A seguinte solução funciona ( fonte ):
fonte