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


83

node.jsの環境と哲学にまったく慣れていないので、いくつかの質問に答えたいと思います。Windowsインストーラー用のnode.jsとノードパッケージマネージャーをダウンロードしました。現在、nodejsアプリの実行にはWindowsCmdプロンプトが使用されています。

  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 2012年

@Raynosどうすればいいですか。コマンドプロンプトを閉じて、もう一度開きますか?その時、私はNodeJを嫌い始めました。コンソールをクリアする方法はありませんか?
Deeptechtons 2012年

1
どのコンソールをクリアしますか?Windowsのcmdシェルまたはpowershellまたはunixシェル?試したことはありますclsclear
Raynos 2012年

回答:


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

これはLinuxで動作します。窓についてはよくわかりません。

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

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

2番目の「トリック」だけが私のために働いた、残りのすべての答えは役に立たなかったWindows8でのnodemonの使用
laggingreflex

8
誰かがこれを頑固にした場合に備えて。Windowsの場合:process.stdout.write('\033c');、として'\033[2J'のみ現在のアプリケーションストリームをクリアし、'\033c'リセットははstd
tenbits

19
これはANSIエスケープコードです。すべての人が興味を持った場合に備えて(私はそうだった)。これ\033は、ASCIIでのESCの8進数です。角かっこでCSI(Control Sequence Introducer)を形成します。 0J1Jおよび2Jクリアトップ、ボトム、画面全体、それぞれ。
Jared Beck

2
@TedNyberg厳密モード(8進リテラル)では機能しないのは正しいですが、必要に応じて「\ x1BC」または「\ x1B [EJ」を使用してこれを回避できます。
ライアントーマス

1
@TedNybergは、16進リテラル(\ x ...)に加えて、Iaktakの回答などのUnicodeリテラル(\ u ...)も機能します。
ライアントーマス

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

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


2
これは、Server 2008 r2で機能した、ここにリストされている唯一のエスケープシーケンスであり、Windows7システムでもうまく機能します。
pierce.jason 2014年

10でも動作します。
oooyaya 2017年

これはクロスプラットフォームであり、クリア後に空白を残さないため、受け入れられる答えになるはずです。
David Callanan 2017

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で機能しますか?私は、WindowsがほとんどすべてのANSIエスケープコードを嫌っていることを知っています。
joshua-anderson 2013

2
はい、使用しています。コードはおそらくnodejsによって解釈されます。
laktak 2013

2
そして、 \ 033のソリューションを使用しているとき進リテラル文句strictモードでは、この作品
chriskelly

私はこれを受け入れられた答えよりも好みます。0,0にリセットすると、Windows 10Powershellの適切な「cls」に近づくことができます。
スティーブクーパー

49

これは主にLinux用ですが、Windowsでも動作することが報告されています。

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


4
Ctrl + Lは、Windows 8コマンドプロンプトでノードを使用するときに画面をクリアします
ナミラ2015年

4
ノードREPLはgnom-terminalを使用するため、ctrl + lはWindowsでも機能するため、これは推奨される回答です。
IGRACH 2015年

2
素晴らしい提案です!これにより画面がクリアされ、>とカーソルのみが残ります。
ブライリークリストファーオクスリー2016

Windows10。前のコンテンツをスクロールして表示しないようにすることで、クリアされたように見せます。上にスクロールすると、古いコンテンツが引き続き表示されます。
joedotnot 2017

Linuxにはこのためのリセットコマンドがあります。しかし、ターミナルで与えられるべきです。
ニシャント2017

29

私はWindowsCMDを使用していますが、これは私のために機能しました

console.clear();

これは、ターミナルのMacOS 10.15(Catalina)上のNode.js v14.0.0でも機能します
Amir



8

これは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);
    });    
}

3
「clear」は* nixコマンドなので、Windowsには「cls」が必要だと思います。
Steven Vachon 2014年

ただしclear || cls、Windowsがサポートし||ているかどうかはわかりません
godblessskeleton

7

Node.JS v8.3.0以降、メソッドclearを使用できます。

console.clear()

これは私がすでに行ったことであり、実際には一貫性がないため、ここに来ました(
godbless新たな


3

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


PHPStormでも動作します。Ctrl+Knode.jsが次回の実行時にコンソールを復元しない場合、唯一の解決策のように見えます。
bencergazda 2018

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 2017

0

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

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


0

Macでは、Cmd + Kを使用してコンソールをクリアするだけです。これは、プロジェクト内にコードを追加するよりも非常に便利で優れています。


-1

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


-1

私の場合、私は永遠にループし、コンソールに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();

このコードを実行すると、「キュー内のメッセージの数テストキュー:1」という同じメッセージが表示されます。そして数が変わる(1..2..3など)。


-2

Ctrl + L これは、最良で、最も単純で、最も効果的なオプションです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.