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");
위의 @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다음 인쇄 문 앞에서 대체 문자열이 이전 문을 덮어쓰기 직전에 커서가 재설정됩니다.
Windows 콘솔(Linux도 마찬가지)에서는'\r'그 등가코드로.\033[0G:
process.stdout.write('ok\033[0G');
이 명령은 VT220 단자 이스케이프 시퀀스를 사용하여 커서를 첫 번째 열로 보냅니다.
다음과 같은 많은 답변이 제시된 것으로 보입니다.
process.stdout.write
오류 로그는 다음에서 내보내야 합니다.
process.stderr
대신 다음을 사용합니다.
console.error
왜 그런지 궁금해하는 사람들을 위해process.stdout.write('\033[0G');아무 것도 하지 않았습니다. 왜냐하면.stdout버퍼링되어 있으므로 기다리셔야 합니다.drain이벤트(자세한 정보).
쓰기가 반환되는 경우false그것은 발사할 것입니다.drain사건의
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('ok\033[0G')그리고 그냥 사용하는 것.'\r'새 줄을 만들기만 하면 되지만 Mac OS X 10.9.2에서는 덮어쓰지 않습니다.
편집: 현재 줄을 바꾸기 위해 사용해야 했습니다.
process.stdout.write('\033[0G');
process.stdout.write('newstuff');
strict 모드를 사용할 때 다음 오류가 발생했습니다.
노드 오류: "엄격 모드에서는 8진수 리터럴을 사용할 수 없습니다."
다음 솔루션이 작동합니다(소스).
process.stdout.write("received: " + bytesReceived + "\x1B[0G");
Linux 및 Windows, strict 모드 및 non strict 모드에서 모두 작동하고 인쇄할 때마다 줄을 완전히 지우려면 다음을 사용합니다.
const str = 'Hi there'
process.stdout.write(str.padEnd(50) + '\x1b[0G')
언급URL : https://stackoverflow.com/questions/6157497/node-js-printing-to-console-without-a-trailing-newline
'programing' 카테고리의 다른 글
| ono 명령을 사용하여 분기를 gitrebase하는 방법은 무엇입니까? (0) | 2023.05.26 |
|---|---|
| C#에서 대용량 파일을 바이트 배열로 읽는 가장 좋은 방법은 무엇입니까? (0) | 2023.05.26 |
| 데이터 그리드에서 선택한 행의 색상을 설정하는 방법 (0) | 2023.05.26 |
| C++ 문자열 ==과 비교()의 차이점은 무엇입니까? (0) | 2023.05.26 |
| 수집의 목적은 무엇입니까?체인맵? (0) | 2023.05.26 |