Windows上的Node.Js - 如何清除控制台

时间:2012-01-25 17:15:26

标签: windows node.js console windows-vista

作为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");
    
  3. 我将代码更改为以下内容并刷新浏览器以查找内容类型不会更改,如何查看更改?

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

21 个答案:

答案 0 :(得分:92)

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

这适用于linux。不确定窗户。

您可以使用以下内容“欺骗”用户:

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

答案 1 :(得分:66)

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

这也适用于Windows。至少Win7。

答案 2 :(得分:50)

这将清除Windows上的控制台并将光标置于0,0:

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

or

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

答案 3 :(得分:37)

主要用于 Linux ,但据报道也适用于Windows。

Gnome Terminal中有 Ctrl + L ,它会清除终端。它可以与Python,Node JS或任何使用终端的解释器一起使用。我倾向于多次清楚,因此这非常方便。如果在Gnome Terminal中清除你可以做 Ctrl + L ,它与REPL运行无关。

答案 4 :(得分:24)

在Windows上以严格模式清除控制台:

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

答案 5 :(得分:17)

我正在使用Windows CMD,这对我有用

console.clear();

答案 6 :(得分:8)

从Node.JS v8.3.0 开始,您可以使用方法clear

console.clear()

答案 7 :(得分:7)

尚未在Windows上测试此功能但在unix上运行。诀窍在child_process模块中。查看文档。您可以将此代码保存为文件,并在每次需要时将其加载到REPL。

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

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

答案 8 :(得分:7)

只需在Windows上使用head1, head2, head3即可清除控制台。

答案 9 :(得分:3)

用严格模式解决问题:

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

答案 10 :(得分:2)

如果您使用 VSCode ,则可以使用 CTRL + K 。我知道这不是一般的解决方案,但可以帮助一些人。

答案 11 :(得分:2)

我无法完成上述任何工作。我使用nodemon进行开发,发现这是清除控制台的最简单方法:

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

它只是将控制台滚动几行,以便为后续的console.log命令提供一个清晰的屏幕。

希望它有所帮助。

答案 12 :(得分:2)

就用官方的方式:

console.log('Blah blah blah'); // Prints "Blah blah blah"

console.clear(); // Clears, or in other words, resets the terminal.

console.log('You will only see this message. No more Blah blah blah...');

答案 13 :(得分:1)

节点中没有console.clear()

使用ES6 JavaScript收到了''.repeat() string method,因此我们可以这样做:

console.log('\n'.repeat(1000));

基本上会打印1000个空行并模拟console.clear()

答案 14 :(得分: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);
}

答案 15 :(得分: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包发布。

答案 16 :(得分:0)

迟来的,但是如果你正在使用powershell,则ctrl + l可以在windows中运行:) Powershell + chocolatey + node + npm = wins。

答案 17 :(得分:0)

此代码在我的node.js服务器控制台Windows 7上运行良好。

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

答案 18 :(得分:0)

就我而言,我一直循环播放并在控制台中单行显示一个数字:

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

运行此代码时,您将看到相同的消息“队列Test Queue中的消息数:1.”。和数字更改(1..2..3等)。

答案 19 :(得分:-1)

Ctrl + L 这是最好,最简单,最有效的选择。

答案 20 :(得分:-1)

在Mac上,我只需使用 Cmd + K 清除控制台,非常方便,并且比在项目内部添加代码更方便。