web-dev-qa-db-ja.com

Windows上のNode.Js-コンソールをクリアする方法

Node.js環境と哲学にまったく新しいので、いくつかの質問に対する答えが欲しいです。 Windowsインストーラー用のnode.jsとノードパッケージマネージャーをダウンロードしました。WindowsCmdプロンプトは現在、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");
78
Deeptechtons
console.log('\033[2J');

これはLinuxで機能します。ウィンドウについてはわかりません。

次のような方法でユーザーを「だます」ことができます。

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

これはWindowsでも機能します。少なくともWin7。

67
lfree

これにより、Windowsのコンソールがクリアされ、カーソルが0,0に置かれます。

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

または

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

これはLinuxを主な目的としていますが、Windowsでも動作することが報告されています。

がある Ctrl + L Gnomeターミナルで、ターミナル自体をクリアします。 Python、Node JSまたはおそらく端末を使用するインタープリターで使用できます。何度もクリアする傾向があるため、これは非常に便利です。 Ctrl + L、REPL実行中とは関係ありません。

41
Nishant

また、Windowsの厳格モードでコンソールをクリアするには:

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

私はWindows CMDを使用していますが、これは私のために働いた

console.clear();
17
yousef

単にCTRL + Lを押して、コンソールをクリアします。

9
LanilT

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

ストリクトモードの問題を解決するには:

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

上記のいずれも機能しませんでした。開発にnodemonを使用していますが、これがコンソールをクリアする最も簡単な方法であることがわかりました。

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

コンソールを数行スクロールするだけなので、後続のconsole.logコマンドの画面が明確になります。

それが誰かを助けることを願っています。

2
ciso

VSCodeを使用している場合、CTRL + K。私はこれが一般的な解決策ではないことを知っていますが、一部の人々を助けるかもしれません。

2
Hexodus

ノードにはconsole.clear()がありません。

ES6 JavaScriptで ''.repeat()文字列メソッド を受け取ったため、次のことができます。

_console.log('\n'.repeat(1000));
_

基本的には1000の空行を印刷し、console.clear()をシミュレートします

1
Sergio

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パッケージとしてリリースしました。

1
Steven Vachon

私の場合、私はそれを永遠にループし、コンソールに数字を一行で表示するようにしました:

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

このコードを実行すると、同じメッセージ「テストキュー内のメッセージの数:1」が表示されます。および番号の変更(1..2..3など)。

0
Jean J. Michel

遅ればせながら、PowerShellを使用している場合、Ctrl + LはWindowsで機能します:) Powershell +チョコレート+ノード+ npm =勝利。

0
user4421448

このコードは、node.jsサーバーコンソールWindows 7で正常に機能します。

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

0
SkySibe