Node.Js trên windows - Cách xóa bảng điều khiển


83

Hoàn toàn mới trong môi trường và triết lý node.js, tôi muốn có câu trả lời cho một số câu hỏi. Tôi đã tải xuống node.js cho trình cài đặt cửa sổ và cũng là trình quản lý gói nút. Lời nhắc Cmd của Windows hiện đang được sử dụng để chạy ứng dụng nodejs.

  1. cls xóa cửa sổ lệnh hoặc lỗi trong dấu nhắc lệnh. Có tương đương cho node.js không? console.clear không tồn tại; (hoặc nó ở một số dạng khác?

  2. Tôi đã tạo một máy chủ thông qua mã này bên dưới

    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");
    

Tôi đã thay đổi mã thành bên dưới và làm mới trình duyệt để thấy rằng loại nội dung không thay đổi, làm cách nào để xem các thay đổi?

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
Khởi động lại máy chủ để xem các thay đổi
Raynos

@Raynos làm cách nào để làm điều đó. Đóng dấu nhắc lệnh và mở lại? tôi sẽ bắt đầu ghét NodeJs. Không có cách nào để xóa bảng điều khiển?
Deeptechtons

1
xóa bảng điều khiển nào? Cửa sổ cmd shell hoặc powershell hoặc unix shell? Bạn đã thử clshoặc clear?
Raynos

Câu trả lời:


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

Điều này hoạt động trên linux. Không chắc chắn về cửa sổ.

Bạn có thể "lừa" người dùng bằng cách sử dụng một cái gì đó như sau:

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

Chỉ có "mẹo" thứ hai có tác dụng với tôi, còn lại tất cả các câu trả lời đều vô dụng . Sử dụng gật đầu trên windows8
laggingreflex

8
trong trường hợp ai đó khai báo điều này. Trên cửa sổ: process.stdout.write('\033c');, như '\033[2J'chỉ xóa dòng ứng dụng hiện tại, và '\033c'resets std
tenbits

19
Đây là mã thoát ANSI , trong trường hợp tất cả các bạn tò mò (tôi đã từng). Là \033số bát phân của ESC trong ASCII. Với giá đỡ, nó tạo thành CSI (Trình giới thiệu trình tự điều khiển). 0J, 1J2Jrõ ràng trên, dưới và toàn bộ màn hình, tương ứng.
Jared Beck,

2
@TedNyberg Bạn đúng là nó sẽ không hoạt động ở chế độ nghiêm ngặt (chữ bát phân) nhưng bạn có thể khắc phục điều này bằng cách sử dụng "\ x1BC" hoặc "\ x1B [EJ" tùy thuộc vào những gì bạn cần.
Ryan Thomas

1
@TedNyberg ngoài các ký tự hex (\ x ...) unicode (\ u ...) chẳng hạn như trong câu trả lời của Iaktak cũng hoạt động.
Ryan Thomas

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

Điều này cũng hoạt động trên các cửa sổ. Win7 ít nhất.


2
Đây là trình tự thoát duy nhất được liệt kê ở đây phù hợp với tôi trên Server 2008 r2 và nó cũng hoạt động tốt trên hệ thống Windows 7 của tôi.
pierce.jason

Hoạt động trên 10 là tốt.
oooyaya

đây phải là câu trả lời được chấp nhận vì nó là đa nền tảng và không để lại khoảng trắng sau khi xóa.
David Callanan

Hoạt động trên Ubuntu.

Hoạt động trên mac (10.15.x)
Mosh Feu

53

Thao tác này sẽ xóa bảng điều khiển trên Windows và đặt con trỏ ở vị trí 0,0:

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

hoặc là

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

Bạn có chắc điều này hoạt động trên windows không? Tôi biết rằng các cửa sổ ghét hầu hết tất cả các mã thoát ansi.
joshua-anderson

2
Có, tôi đang sử dụng nó. Các mã có thể được giải thích bởi nodejs.
laktak

2
tác phẩm này trong chế độ nghiêm ngặt mà phàn nàn về bát phân đen khi sử dụng các giải pháp \ 033
chriskelly

Tôi thích điều này hơn câu trả lời được chấp nhận; đặt lại về 0,0 sẽ giúp bạn gần hơn với 'cls' thích hợp trong Windows 10 Powershell.
Steve Cooper

49

Điều này chủ yếu dành cho Linux nhưng cũng được báo cáo là hoạt động trong Windows.

Ctrl + Ltrong Gnome Terminal xóa thiết bị đầu cuối như vậy. Nó có thể được sử dụng với Python, Node JS hoặc bất kỳ Trình thông dịch nào có lẽ sử dụng thiết bị đầu cuối. Tôi có xu hướng xóa nhiều lần do đó điều này rất tiện dụng. Bạn chỉ có thể làm rõ ràng trong Gnome Terminal Ctrl + L, nó không liên quan gì đến REPL đang chạy.


4
Ctrl + L xóa màn hình khi sử dụng nút trong windows 8 command prompt
Namila

4
Đây nên là câu trả lời ưu tiên vì nút REPL sử dụng gnom-terminal nên ctrl + l cũng hoạt động trên windows.
IGRACH

2
Gợi ý tuyệt vời! Thao tác này sẽ xóa màn hình, chỉ để lại dấu> và con trỏ.
Brylie Christopher Oxley

Windows 10. Cung cấp giao diện mà nó đã xóa bằng cách cuộn nội dung trước đó ra khỏi chế độ xem. Nếu bạn cuộn lên, nội dung cũ vẫn xuất hiện lại.
joedotnot

Có lệnh đặt lại trong Linux cho việc này. Nhưng nên được đưa ra trong Terminal.
Nishant

29

tôi đang sử dụng CMD windows và điều này phù hợp với tôi

console.clear();

Điều này cũng hoạt động cho Node.js v14.0.0 trên MacOS 10.15 (Catalina) trong thiết bị đầu cuối
Amir

27

Và để xóa bảng điều khiển khi ở chế độ nghiêm ngặt trên Windows:

'use strict';
process.stdout.write('\x1Bc'); 

Cái này làm việc và không gây ra một lỗi JSDoc
James Cameron

Hoạt động trên tất cả các nền tảng (CMD, Cmder, GitBash, Ubuntu).
Valentin P


8

Chưa thử nghiệm điều này trên Windows nhưng hoạt động trên unix. Bí quyết nằm trong child_processmô-đun. Kiểm tra tài liệu. Bạn có thể lưu mã này dưới dạng tệp và tải nó vào REPL bất cứ khi nào bạn cần.

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

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

3
tôi đoán là bạn cần "cls" cho Windows vì "clear" là một lệnh * nix.
Steven Vachon

chúng ta có thể đặt clear || clskhông chắc chắn nếu cửa sổ hỗ trợ ||mặc dù
godblessstrawberry

7

Bắt đầu từ Node.JS v8.3.0, bạn có thể sử dụng phương thức clear :

console.clear()

Tôi đến đây vì đây là những gì tôi đã làm và nó thực sự hoạt động không ổn định (
godblessstrawberry

5

Để giải quyết vấn đề với chế độ nghiêm ngặt:

'use strict';
process.stdout.write('\x1B[2J');

3

Nếu bạn đang sử dụng, VSCodebạn có thể sử dụng CTRL + K. Tôi biết đây không phải là một giải pháp chung chung nhưng có thể giúp ích cho một số người.


Cũng hoạt động trên PHPStorm. Ctrl+Kcó vẻ là giải pháp duy nhất, khi node.js không khôi phục bảng điều khiển trong lần chạy tiếp theo.
bencergazda

1

Dựa trên câu trả lời của sanatgersappa và một số thông tin khác mà tôi tìm thấy, đây là những gì tôi đã nghĩ ra:

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);
}

Để làm cho mọi thứ dễ dàng hơn , tôi đã phát hành gói này dưới dạng gói npm có tên cli-clear .


Một số điều thú vị: "\u001b[32;1m"Bạn có thể đặt thậm chí cả màu của văn bản (trong dòng lệnh Windows) (- mã hoàn tác "\u001b\x1b[0m":) Thông tin thêm: termsys.demon.co.uk/vtansi.htmen.wikipedia.org/wiki/ANSI_escape_code

1

Bạn có thể sử dụng readlinemô-đun:

readline.cursorTo(process.stdout, 0, 0) di chuyển con trỏ đến (0, 0).

readline.clearLine(process.stdout, 0) xóa dòng hiện tại.

readline.clearScreenDown(process.stdout) xóa mọi thứ bên dưới con trỏ.

const READLINE = require('readline');

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

0

Tôi không thể làm cho bất kỳ điều nào ở trên hoạt động. Tôi đang sử dụng gật đầu để phát triển và thấy đây là cách dễ nhất để xóa bảng điều khiển:

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

Nó chỉ cuộn bảng điều khiển vài dòng để bạn có được một màn hình rõ ràng cho các lệnh console.log tiếp theo.

Hy vọng nó sẽ giúp một ai đó.


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

0

Mã này hoạt động tốt trên bảng điều khiển máy chủ node.js Windows 7 của tôi.

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


0

Trên mac, tôi chỉ cần sử dụng Cmd + K để xóa bảng điều khiển, rất tiện dụng và tốt hơn là thêm mã bên trong dự án của bạn để làm điều đó.


-1

Đã muộn, nhưng ctrl + l hoạt động trong windows nếu bạn đang sử dụng powershell :) Powershell + chocolatey + node + npm = win.


-1

Trong trường hợp của tôi, tôi đã làm điều đó để lặp lại mãi mãi và hiển thị trong bảng điều khiển một số chưa từng có trong một dòng:

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();

Khi bạn chạy mã này, bạn sẽ thấy cùng một thông báo "Số lượng thư trong hàng đợi Kiểm tra hàng đợi: 1." và số thay đổi (1..2..3, v.v.).


-2

Ctrl + L Đây là lựa chọn tốt nhất, đơn giản và hiệu quả nhất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.