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 콘솔 (리눅스도)에서 '\ 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
다음 print 문 앞에 를 배치하면 대체 문자열이 이전 문자열을 덮어 쓰기 직전에 커서가 재설정됩니다.
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");
});
There seem to be many answers suggesting process.stdout.write
. Error logs should be emitted on process.stderr
instead (Use console.error
). For anyone who is wonder why process.stdout.write('\033[0G'); wasn't doing anything it's because stdout is buffered and you need to wait for drain
event (See Stdout flush for NodeJS?). If write returns false it will fire a drain
event.
None of these solutions work for me. process.stdout.write('ok\033[0G') and just using '\r' just create a new line, do not overwrite, Mac OSX 10.9.2
EDIT: I had to use this to replace the current line
process.stdout.write('\033[0G'); process.stdout.write('newstuff');
I got an error when using strict mode.
Node error: "Octal literals are not allowed in strict mode."
I found the answer here: https://github.com/SBoudrias/Inquirer.js/issues/111
process.stdout.write("received: " + bytesReceived + "\x1B[0G");
참고URL : https://stackoverflow.com/questions/6157497/node-js-printing-to-console-without-a-trailing-newline
'Program Tip' 카테고리의 다른 글
서비스 대 공장에 대해 혼동 (0) | 2020.10.02 |
---|---|
postgres : 사용자를 수퍼 유저로 업그레이드 하시겠습니까? (0) | 2020.10.02 |
AngularJS에서 ng-repeat로 키와 값을 반복하는 방법은 무엇입니까? (0) | 2020.09.30 |
urllib, urllib2, urllib3 및 요청 모듈의 차이점은 무엇입니까? (0) | 2020.09.30 |
Windows 배치 파일을 통해 긴 명령을 여러 줄로 분할 (0) | 2020.09.30 |