Windows의 Node.js-콘솔을 지우는 방법


83

node.js 환경과 철학에 완전히 새로운 것이므로 몇 가지 질문에 대한 답변을 원합니다. Windows 설치 관리자 및 노드 패키지 관리자 용 node.js를 다운로드했습니다. Windows Cmd 프롬프트는 현재 nodejs 앱을 실행하는 데 사용되고 있습니다.

  1. cls는 명령 창이나 명령 프롬프트의 오류를 지 웁니다. node.js에 상응하는 것이 있습니까? console.clear가 존재하지 않습니다. (또는 다른 형태로 있습니까?

  2. 아래 코드를 통해 서버를 만들었습니다.

    var http = require("http");
    http.createServer(function (request, response) {
        response.writeHead(200, {
            "Content-Type": "text/html"
        });
        response.write("Hello World");
        console.log("welcome world")response.end();
    }).listen(9000, "127.0.0.1");
    

코드를 아래로 변경하고 브라우저를 새로 고침하여 콘텐츠 유형이 변경되지 않음을 확인했습니다. 변경 사항을 어떻게 볼 수 있습니까?

var http = require("http");
http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  console.log("welcome world")
  response.end();
}).listen(9000,"127.0.0.1");

1
서버를 다시 시작하여 변경 사항 확인
Raynos

@ Raynos 어떻게해야합니까? 명령 프롬프트를 닫고 다시여시겠습니까? 남자 나는 NodeJ를 싫어하기 시작할 것입니다. 콘솔을 지우는 방법이 없습니까?
Deeptechtons

1
어떤 콘솔을 지우시겠습니까? Windows cmd 셸 또는 powershell 또는 unix 셸? cls또는 시도 했습니까 clear?
Raynos

답변:


101
console.log('\033[2J');

이것은 리눅스에서 작동합니다. 창문에 대해 잘 모르겠습니다.

다음과 같이 사용자를 "속일"수 있습니다.

var lines = process.stdout.getWindowSize()[1];
for(var i = 0; i < lines; i++) {
    console.log('\r\n');
}

두 번째 "트릭"만이 나를 위해 일했고 나머지 모든 대답은 쓸모가 없었습니다 . windows8에서 nodemon 사용
laggingreflex 2014 년

8
누군가가 이것을 엉망으로 만들 경우. Windows의 경우 : process.stdout.write('\033c');같은 '\033[2J'단지 현재 응용 프로그램 스트림을 지우고 '\033c'재설정 수 std
tenbits

19
이것은 모두가 궁금한 경우를 대비 하여 ANSI 이스케이프 코드 입니다. 는 \033ASCII에서 ESC의 8 진수입니다. 브래킷으로 CSI (Control Sequence Introducer)를 형성합니다. 0J, 1J2J클리어 상단, 하단 및 전체 화면 각각.
Jared Beck 2014

2
@TedNyberg 엄격 모드 (8 진수 리터럴)에서는 작동하지 않는다는 것이 맞지만 필요한 것에 따라 "\ x1BC"또는 "\ x1B [EJ"를 사용하여이 문제를 해결할 수 있습니다.
Ryan Thomas

1
@TedNyberg 외에도 Iaktak의 답변과 같은 16 진수 리터럴 (\ x ...) 유니 코드 리터럴 (\ u ...)도 작동합니다.
Ryan Thomas

71
process.stdout.write('\033c');

이것은 창에서도 작동합니다. 적어도 Win7.


2
이것은 Server 2008 r2에서 나를 위해 일한 유일한 이스케이프 시퀀스였으며 Windows 7 시스템에서도 잘 작동합니다.
pierce.jason

10에서도 작동합니다.
oooyaya

이것은 크로스 플랫폼이며 지우기 후 공백을 남기지 않기 때문에 받아 들여지는 대답이어야합니다.
David Callanan

Ubuntu에서 작동합니다.

Mac (10.15.x)에서 작동
Mosh Feu

53

그러면 Windows에서 콘솔이 지워지고 커서가 0,0에 놓입니다.

var util = require('util');
util.print("\u001b[2J\u001b[0;0H");

또는

process.stdout.write("\u001b[2J\u001b[0;0H");

이것이 Windows에서 작동합니까? 나는 창문이 거의 모든 ANSI 이스케이프 코드를 싫어한다는 것을 알고 있습니다.
joshua-anderson

2
예, 사용하고 있습니다. 코드는 아마도 nodejs에 의해 해석됩니다.
laktak

2
그리고 는 \ 033 솔루션을 사용할 때 진수 문자를 뿌려 엄격 모드에서이 작품
chriskelly

나는 이것을 받아 들인 대답보다 선호합니다. 다시 0,0으로 재설정하면 Windows 10 Powershell에서 적절한 'cls'에 더 가까워집니다.
Steve Cooper

49

이것은 Linux 용입니다. 주로 이지만 Windows에서도 작동하는 것으로보고되었습니다.

Ctrl + L그놈 터미널 에는 터미널을 지우는 것이 있습니다. Python, Node JS 또는 아마도 터미널을 사용하는 모든 인터프리터와 함께 사용할 수 있습니다. 나는 여러 번 지우는 경향이 있으므로 이것은 매우 편리합니다. Gnome Terminal에서 명확하게 수행 할 수 Ctrl + L있도록 설정하면 REPL 실행과 관련이 없습니다.


4
Ctrl + L은 Windows 8 명령 프롬프트에서 노드를 사용할 때 화면을 지 웁니다
Namila

4
노드 REPL은 gnom-terminal을 사용하므로 ctrl + l은 Windows에서도 작동하기 때문에 선호되는 대답이어야합니다.
IGRACH

2
좋은 제안! 그러면 화면이 지워지고> 및 커서 만 남습니다.
Brylie Christopher Oxley

Windows 10.보기에서 이전 콘텐츠를 스크롤하여 지워진 모양을 제공합니다. 위로 스크롤하면 이전 콘텐츠가 계속 다시 나타납니다.
joedotnot

이를 위해 Linux에는 재설정 명령이 있습니다. 그러나 터미널에서 제공되어야합니다.
Nishant

29

나는 Windows CMD를 사용하고 있으며 이것은 나를 위해 일했습니다.

console.clear();

이것은 터미널의 MacOS 10.15 (Catalina)의 Node.js v14.0.0에서도 작동합니다
Amir



8

Windows에서 테스트하지는 않았지만 유닉스에서 작동합니다. 트릭은 child_process모듈에 있습니다. 문서를 확인하십시오. 이 코드를 파일로 저장하고 필요할 때마다 REPL에로드 할 수 있습니다.

var util = require('util');
var exec = require('child_process').exec;

function clear(){
    exec('clear', function(error, stdout, stderr){
        util.puts(stdout);
    });    
}

3
내 생각 엔 "clear"는 * nix 명령이기 때문에 Windows의 경우 "cls"가 필요합니다.
Steven Vachon 2014 년

우리는 넣을 수 있습니다 clear || cls하지 않도록 창문을 지원하는 경우 ||비록
godblessstrawberry

7

Node.JS v8.3.0 부터 clear 메소드를 사용할 수 있습니다 .

console.clear()

이것은 내가 이미 한 일이기 때문에 여기에 왔고 실제로는 부적절하게 작동합니다 (
godblessstrawberry


3

당신이 사용하는 경우 VSCode당신은 사용할 수 있습니다 CTRL + K. 나는 이것이 일반적인 해결책은 아니지만 일부 사람들에게 도움이 될 수 있음을 알고 있습니다.


PHPStorm에서도 작동합니다. Ctrl+Knode.js가 다음 실행에서 콘솔을 복원하지 않을 때 유일한 해결책 인 것 같습니다.
bencergazda

1

sanatgersappa의 답변과 내가 찾은 기타 정보를 바탕으로 다음과 같이 생각해 냈습니다.

function clear() {
    var stdout = "";

    if (process.platform.indexOf("win") != 0) {
        stdout += "\033[2J";
    } else {
        var lines = process.stdout.getWindowSize()[1];

        for (var i=0; i<lines; i++) {
            stdout += "\r\n";
        }
    }

    // Reset cursur
    stdout += "\033[0f";

    process.stdout.write(stdout);
}

일을 더 쉽게하기 위해 cli-clear 라는 npm 패키지로 출시했습니다 .


약간의 재미 : "\u001b[32;1m"Windows 명령 줄에서 텍스트 색상도 설정할 수 있습니다 (-실행 취소 코드 :)"\u001b\x1b[0m" 추가 정보 : termsys.demon.co.uk/vtansi.htmen.wikipedia.org/wiki/ANSI_escape_code

1

readline모듈을 사용할 수 있습니다 .

readline.cursorTo(process.stdout, 0, 0) 커서를 (0, 0)으로 이동합니다.

readline.clearLine(process.stdout, 0) 현재 줄을 지 웁니다.

readline.clearScreenDown(process.stdout) 커서 아래의 모든 항목을 지 웁니다.

const READLINE = require('readline');

function clear() {
    READLINE.cursorTo(process.stdout, 0, 0);
    READLINE.clearLine(process.stdout, 0);
    READLINE.clearScreenDown(process.stdout);
}

0

위의 어떤 것도 작동하지 못했습니다. 나는 개발을 위해 nodemon을 사용하고 있으며 이것이 콘솔을 지우는 가장 쉬운 방법임을 알았습니다.

  console.log("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

콘솔을 여러 줄로 스크롤하여 후속 console.log 명령에 대한 명확한 화면을 얻습니다.

누군가에게 도움이되기를 바랍니다.


5
console.log('\n'.repeat(999))
corysimmons

0

이 코드는 내 node.js 서버 콘솔 Windows 7에서 잘 작동합니다.

process.stdout.write("\u001b[0J\u001b[1J\u001b[2J\u001b[0;0H\u001b[0;0W");


0

Mac에서는 단순히 Cmd + K 를 사용 하여 콘솔을 지우고 프로젝트 내부에 코드를 추가하는 것보다 훨씬 편리합니다.


-1

늦었지만 powershell을 사용하는 경우 ctrl + l이 Windows에서 작동합니다. :) Powershell + chocolatey + node + npm = 승리.


-1

제 경우에는 영원히 반복하고 콘솔에 한 줄로 숫자를 표시했습니다.

class Status {

  private numberOfMessagesInTheQueue: number;
  private queueName: string;

  public constructor() {
    this.queueName = "Test Queue";
    this.numberOfMessagesInTheQueue = 0;
    this.main();
  }

  private async main(): Promise<any> {    
    while(true) {
      this.numberOfMessagesInTheQueue++;
      await new Promise((resolve) => {
        setTimeout(_ => resolve(this.showResults(this.numberOfMessagesInTheQueue)), 1500);
      });
    }
  }

  private showResults(numberOfMessagesInTheQuee: number): void {
    console.clear();
    console.log(`Number of messages in the queue ${this.queueName}: ${numberOfMessagesInTheQuee}.`)
  }
}

export default new Status();

이 코드를 실행하면 "Queue Test Queue의 메시지 수 : 1"이라는 동일한 메시지가 표시됩니다. 번호 변경 (1..2..3 등).


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.