web-dev-qa-db-fra.com

Node.Js sur Windows - Comment effacer la console

Étant totalement nouveau dans l’environnement et la philosophie de node.js, j'aimerais avoir des réponses à quelques questions. J'avais téléchargé le programme d'installation node.js pour Windows ainsi que le gestionnaire de paquets de nœuds. Windows Cmd Prompt est actuellement utilisé pour l'exécution des applications nodejs.

  1. cls efface la fenêtre de commande ou les erreurs dans l'invite de commande. Existe-t-il un équivalent pour node.js? console.clear n'existe pas (ou existe-t-il sous une autre forme?

  2. J'ai créé un serveur via ce code ci-dessous

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

j'ai changé le code ci-dessous et j'ai actualisé le navigateur pour trouver que le type de contenu ne change pas. Comment puis-je voir les modifications?

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

Cela fonctionne sur linux. Pas sûr de Windows.

Vous pouvez "tromper" l'utilisateur en utilisant quelque chose comme ceci:

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

Cela fonctionne également sur les fenêtres. Win7 au moins.

67
lfree

Ceci efface la console sous Windows et place le curseur à 0,0:

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

o

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

Ceci est pour Linux principalement, mais il est également signalé que cela fonctionne sous Windows.

Il y a Ctrl + L dans Gnome Terminal qui efface le terminal en tant que tel. Il peut être utilisé avec Python, Node JS ou n'importe quel interpréteur utilisant probablement un terminal. J'ai tendance à effacer plusieurs fois, ce qui est très pratique. Instaed pour effacer dans Gnome Terminal, vous pouvez simplement le faire. Ctrl + L, cela n’a rien à voir avec le REPL en cours d’exécution.

41
Nishant

Et pour effacer la console en mode strict sous Windows:

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

j'utilise un windows CMD et cela a fonctionné pour moi

console.clear();
17
yousef

Il suffit d'utiliser CTRL + L sur Windows pour vider la console.

9
LanilT

Je n'ai pas testé cela sous Windows mais cela fonctionne sous unix. Le truc est dans le child_process module. Vérifiez la documentation. Vous pouvez enregistrer ce code sous forme de fichier et le charger dans le REPL à chaque fois que vous en avez besoin.

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

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

Pour résoudre les problèmes en mode strict:

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

Je ne pouvais obtenir aucun de ce qui précède au travail. J'utilise nodemon pour le développement et j'ai trouvé le moyen le plus simple d'effacer la console:

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

Il suffit de faire défiler la ligne de plusieurs lignes de la console pour obtenir un écran clair pour les commandes ultérieures console.log.

J'espère que ça aide quelqu'un.

2
ciso

Si vous utilisez VSCode, vous pouvez utiliser CTRL + K. Je sais que ce n'est pas une solution générique, mais peut aider certaines personnes.

2
Hexodus

Il n'y a pas de console.clear() dans le noeud.

Avec ES6, JavaScript a reçu la méthode ''.repeat() string , et nous pouvons donc:

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

qui va en gros imprimer 1000 lignes vides et simuler un console.clear()

1
Sergio

Sur la base de la réponse de sanatgersappa et d’autres informations que j’ai trouvées, voici ce que j’ai trouvé:

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

Pour faciliter les choses , j'ai publié ceci sous la forme d'un paquet npm appelé cli-clear .

1
Steven Vachon

Dans mon cas, je l'ai fait pour boucler pour toujours et montrer à la console un numéro jamais en une seule ligne:

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

Lorsque vous exécutez ce code, vous verrez le même message "Nombre de messages dans la file d'attente Test Queue: 1." et le nombre changeant (1..2..3, etc.).

0
Jean J. Michel

En retard, mais ctrl + l fonctionne dans Windows si vous utilisez powershell :) Powershell + chocolatey + node + npm = gagnant.

0
user4421448

Ce code fonctionne correctement sur la console du serveur node.js sous Windows 7.

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

0
SkySibe