Node.js:打印到控制台没有结尾的换行符?

是否有一个方法打印到控制台没有尾随的换行符? console对象的文档没有说任何关于这个:

的console.log()

用换行符打印到stdout。 这个函数可以以类似printf()的方式接受多个参数。 例:

 console.log('count: %d', count); 

如果在第一个string中没有find格式化元素,则在每个参数上使用util.inspect

你可以使用process.stdout.write()

 process.stdout.write("hello: "); 

有关详细信息,请参阅文档 。

此外,如果您想要覆盖同一行中的邮件,例如倒计时,则可以在string的末尾添加“\ r”。

 process.stdout.write("Downloading " + data.length + " bytes\r"); 

util.print也可以使用。 阅读: http : //nodejs.org/api/util.html#util_util_print

util.print([…])#一个同步输出函数。 将阻止该进程,将每个参数转换为一个string,然后输出到标准输出。 在每个参数之后不放置换行符。

一个例子:

 // get total length var len = parseInt(response.headers['content-length'], 10); var cur = 0; // handle the response response.on('data', function(chunk) { cur += chunk.length; util.print("Downloading " + (100.0 * cur / len).toFixed(2) + "% " + cur + " bytes\r"); }); 

在Windows控制台(也是Linux)中,您应该用等同的代码replace'\ r' 。[0G

 process.stdout.write('ok\033[0G'); 

这使用VT220terminal转义序列将光标发送到第一列。

似乎有很多答案build议process.stdout.write 。 错误日志应该在process.stderr上发出(使用console.error )。 对于任何人想知道为什么process.stdout.write('\ 033 [0G'); 没有做任何事情,因为标准输出缓冲,你需要等待drain事件(请参阅标准输出冲洗的NodeJS? )。 如果写入返回false,它将触发一个drain事件。

这些解决scheme都不适合我。 process.stdout.write('ok \ 033 [0G'),只需使用'\ r'创build一个新行,不要覆盖,Mac OSX 10.9.2

编辑:我不得不用这个来取代当前行

process.stdout.write( '\ 033 [0G'); process.stdout.write( 'Newstuff文件');

使用严格模式时出现错误。

节点错误:“严格模式下不允许使用八进制文字”。

我在这里find答案: https : //github.com/SBoudrias/Inquirer.js/issues/111

process.stdout.write(“received:”+ bytesReceived +“\ x1B [0G”);