[node.js] Node.js : 줄 바꿈없이 콘솔에 인쇄합니까?

줄 바꿈없이 콘솔에 인쇄하는 방법이 있습니까? console객체 문서는 것을에 관한 아무 말도하지 않습니다

console.log()

줄 바꿈으로 stdout에 인쇄합니다. 이 함수는 여러 가지 인수를 printf()비슷한 방식으로 사용할 수 있습니다 . 예:

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

포맷팅 요소가 첫 번째 문자열에 없으면 util.inspect각 인수에 사용됩니다.



답변

당신은 사용할 수 있습니다 process.stdout.write():

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

자세한 내용은 문서를 참조하십시오 .


답변

또한 카운트 다운과 같이 같은 줄에 메시지를 덮어 쓰려면 문자열 끝에 ‘\ r’을 추가하면됩니다.

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


답변

Windows 콘솔 (Linux도)에서 '\r'동등한 코드로 바꿔야 합니다 \033[0G.

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

VT220 터미널 이스케이프 시퀀스를 사용하여 커서를 첫 번째 열로 보냅니다.


답변

@rodowi가 행을 덮어 쓸 수 있다는 점에 대한 훌륭한 추가 기능을 확장 / 향상시킵니다.

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

코드에서 보았 듯이 터미널 커서를 첫 번째 문자에 두지 않으려면 다음을 수행하십시오.

let dots = ''
process.stdout.write(`Loading `)

let tmrID = setInterval(() => {
  dots += '.'
  process.stdout.write(`\rLoading ${dots}`)
}, 1000)

setTimeout(() => {
  clearInterval(tmrID)
  console.log(`\rLoaded in [3500 ms]`)
}, 3500)

를 배치하여 \r다음 인쇄 문 앞에 커서가 교체 문자열이 이전을 덮어 직전 재설정됩니다.


답변

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

오류 로그가 생성되어야합니다.

process.stderr

대신 다음을 사용하십시오.

console.error

process.stdout.write('\033[0G');아무것도하지 않았 는지 궁금한 사람에게는 stdout버퍼링되어 있기 때문에 drain이벤트 를 기다려야합니다 ( 더 많은 정보 ).

쓰기가 반환되면 이벤트 false가 발생합니다 drain.


답변

이 솔루션 중 어느 것도 나를 위해 작동하지 process.stdout.write('ok\033[0G')않으며 단지'\r' 단지 새로운 라인을 만들 수 있지만, 맥 OSX 10.9.2에 덮어 쓰기하지 않습니다.

편집 : 현재 줄을 바꾸려면 이것을 사용해야했습니다.

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