有没有一种方法可以在没有换行符的情况下打印到控制台?控制台对象文档没有说明这方面的任何内容:

console.log()打印到带有换行符的标准输出。此函数可以以类似printf()的方式接受多个参数。例子:console.log('计数:%d',计数);如果在第一个字符串中找不到格式化元素,则在每个参数上使用util.inspect。


当前回答

我在使用严格模式时遇到以下错误:

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

以下解决方案有效(来源):

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

其他回答

这些解决方案都不适用于我,process.stdout.write('ok\033[0G'),只需使用'\r'即可创建新行,但不会在Mac OSX 10.9.2上覆盖。

编辑:我不得不用它来替换当前行:

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

在Windows控制台(也是Linux)中,您应该将“\r”替换为其等效代码\033[0G:

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

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

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

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

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

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

util.print([…])#一种同步输出功能。将阻塞进程,将每个参数转换为字符串,然后输出到stdout。不在每个参数后放置换行符。

例如:

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

我在使用严格模式时遇到以下错误:

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

以下解决方案有效(来源):

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