Есть ли способ печати на консоль без завершающей строки? console
Объект документации ничего не говорит о том , что:
console.log()
Печать на стандартный вывод с новой строки. Эта функция может принимать несколько аргументов
printf()
аналогично. Пример:console.log('count: %d', count);
Если форматирующие элементы не найдены в первой строке, то
util.inspect
используется для каждого аргумента.
node.js
console
console.log
Эван Кэрролл
источник
источник
console.log
печатал\n
буквально, когда я хотел напечатать символ новой строки.` followed by an
n`, когда я хотел вывести реальный символ новой строки.Кроме того, если вы хотите перезаписать сообщения в той же строке, например, в обратном отсчете, вы можете добавить '\ r' в конце строки.
источник
process.stdout.write("Downloading " + data.length + " bytes\033[0G");
\033
с шестигранным литералом ,\x1b
как это:\x1b[0G
. (это работает как со строгим, так и со строгим кодом)В консоли Windows (в том числе и в Linux) вы должны заменить
'\r'
ее эквивалентным кодом\033[0G
:При этом используется escape-последовательность терминала VT220 для отправки курсора в первый столбец.
источник
[\] 39
и курсор выделяется на первомvar spinner = '|/-\\'.split('');process.stdout.write("["+this.randomElement(spinner)+"] "+message+"\033[0G");
man console_codes
(на Linux или в Интернете), и моя любимая ссылка - www2.phys.canterbury.ac.nz/dept/docs/manuals/unix/DEC_4.0e_Docs/… (99% его содержимого все еще работают) , Только предостережение: будьте готовы проверить любые эксперименты на нескольких разных терминалах, прежде чем развернуть их широко.В качестве расширения / улучшения блестящего дополнения, сделанного @rodowi выше относительно возможности перезаписи строки:
Если вы не хотите, чтобы курсор терминала находился на первом символе, как я видел в своем коде, рассмотрите возможность сделать следующее:
Помещая
\r
перед следующим оператором печати, курсор сбрасывается непосредственно перед тем, как замещающая строка перезаписывает предыдущую.источник
Можно также использовать util.print . Читайте: http://nodejs.org/api/util.html#util_util_print
Пример:
источник
util.print
устарела(node:7616) DeprecationWarning: util.print is deprecated. Use console.log instead.
Там, кажется, есть много ответов, предлагающих:
Журналы ошибок должны отправляться:
Вместо этого используйте:
Для тех, кто интересуется, почему
process.stdout.write('\033[0G');
ничего не делал, это потому, чтоstdout
он буферизован, и вам нужно ждатьdrain
события ( подробнее ).Если запись возвращается
false
это вызоветdrain
событие.источник
Ни одно из этих решений не работает для меня,
process.stdout.write('ok\033[0G')
и просто с помощью'\r'
новую строку, но не перезаписываю на Mac OSX 10.9.2.РЕДАКТИРОВАТЬ: я должен был использовать это, чтобы заменить текущую строку:
источник
Я получил следующую ошибку при использовании строгого режима:
Следующее решение работает ( источник ):
источник