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, 1J및 2J클리어 상단, 하단 및 전체 화면 각각.
— 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.htm 및 en.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.