Node.Js en Windows - Cómo borrar la consola

84

Siendo totalmente nuevo en el entorno y la filosofía de node.js, me gustaría respuestas a algunas preguntas. Había descargado el node.js para el instalador de Windows y también el administrador de paquetes de nodos. El indicador de Windows Cmd se está utilizando actualmente para ejecutar aplicaciones de nodejs.

  1. cls borra la ventana de comandos o los errores en el símbolo del sistema. ¿Existe un equivalente para node.js? console.clear no existe; (¿o de alguna otra forma?

  2. Creé un servidor a través de este código a continuación

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

Cambié el código a continuación y actualicé el navegador para encontrar que el tipo de contenido no cambia, ¿cómo puedo ver los cambios?

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");
Deeptechtons
fuente
1
Reinicie el servidor para ver los cambios
Raynos
@Raynos, ¿cómo hago eso? ¿Cerrar el símbolo del sistema y abrirlo de nuevo? Hombre, entonces empezaría a odiar a los NodeJs. ¿No hay forma de borrar la consola?
Deeptechtons
1
claro que consola? ¿Windows cmd shell o powershell o unix shell? ¿Has probado clso clear?
Raynos

Respuestas:

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

Esto funciona en linux. No estoy seguro de las ventanas.

Puedes "engañar" al usuario usando algo como esto:

var lines = process.stdout.getWindowSize()[1];
for(var i = 0; i < lines; i++) {
    console.log('\r\n');
}
sanatgersappa
fuente
Sólo el segundo "truco" funcionó para mí, resto , todas las respuestas fueron inútiles . Uso de nodemon en windows8
laggingreflex
8
en caso de que alguien lo estropee. En Windows:, process.stdout.write('\033c');ya que '\033[2J'solo borra el flujo de la aplicación actual y '\033c'restablece std
tenbits
19
Este es un código de escape ANSI , en caso de que tengan curiosidad (yo lo tenía). El \033es el número octal del CES en ASCII. Con el soporte forma el CSI (Control Sequence Introducer). 0J, 1Jy 2Jborrar la pantalla superior, inferior y completa, respectivamente.
Jared Beck
2
@TedNyberg Tienes razón en que no funcionará en modo estricto (literal octal) pero puedes evitar esto usando "\ x1BC" o "\ x1B [EJ" dependiendo de lo que necesites.
Ryan Thomas
1
@TedNyberg además de los literales hexadecimales (\ x ...), los literales Unicode (\ u ...) como en la respuesta de Iaktak también funcionan.
Ryan Thomas
71
process.stdout.write('\033c');

Esto también funciona en Windows. Win7 al menos.

libre
fuente
2
Esta fue la única secuencia de escape enumerada aquí que funcionó para mí en Server 2008 r2 y también funciona bien en mi sistema Windows 7.
pierce.jason
Funciona también en 10.
oooyaya
esta debería ser la respuesta aceptada, ya que es multiplataforma y no deja espacios en blanco después de borrar.
David Callanan
Funciona en Ubuntu.
Funciona en mac (10.15.x)
Mosh Feu
53

Esto borra la consola en Windows y coloca el cursor en 0,0:

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

o

process.stdout.write("\u001b[2J\u001b[0;0H");
laktak
fuente
¿Estás seguro de que esto funciona en Windows? Sé que Windows odia casi todos los códigos de escape ansi.
Joshua-Anderson
2
Sí, lo estoy usando. Los códigos probablemente sean interpretados por nodejs.
laktak
2
y esto funciona en modo estricto que se queja del literal octal cuando se usan las soluciones \ 033
chriskelly
Prefiero esta a la respuesta aceptada; restablecer de nuevo a 0,0 le da más cerca de un 'cls' adecuado en Windows 10 Powershell.
Steve Cooper
49

Esto es principalmente para Linux, pero también se informa que funciona en Windows.

Hay Ctrl + Len Gnome Terminal que borra el terminal como tal. Se puede usar con Python, Node JS o cualquier intérprete que presumiblemente use terminal. Tiendo a borrar muchas veces, por lo tanto, esto es muy útil. Instalado de hacer clear en Gnome Terminal que puede hacer Ctrl + L, no tiene nada que ver con la ejecución de REPL.

Nishant
fuente
4
Ctrl + L borra la pantalla cuando se usa el nodo en el símbolo del sistema de Windows 8
Namila
4
Esta debería ser la respuesta preferida porque el nodo REPL usa gnom-terminal, por lo que ctrl + l también funciona en Windows.
IGRACH
2
¡Gran sugerencia! Esto borra la pantalla, dejando solo el> y el cursor.
Brylie Christopher Oxley
Windows 10. Da la apariencia de que se borró desplazando el contenido anterior fuera de la vista. Si se desplaza hacia arriba, el contenido antiguo seguirá apareciendo.
joedotnot
Hay un comando de reinicio en Linux para esto. Pero debe darse en Terminal.
Nishant
29

estoy usando un CMD de Windows y esto funcionó para mí

console.clear();
yousef
fuente
Esto también funciona para Node.js v14.0.0 en MacOS 10.15 (Catalina) en la terminal
Amir
27

Y para borrar la consola mientras está en modo estricto en Windows:

'use strict';
process.stdout.write('\x1Bc'); 
guiweb
fuente
Este funcionó y no desencadenó un error JSDoc
James Cameron
También funcionó en todas las plataformas (CMD, Cmder, GitBash, Ubuntu).
Valentin P
14

Solo utilícelo CTRL + Len Windows para limpiar la consola.

Lanil Marasinghe
fuente
8

No he probado esto en Windows pero funciona en Unix. El truco está en el child_processmódulo. Consulta la documentación. Puede guardar este código como un archivo y cargarlo en el REPL cada vez que lo necesite.

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

function clear(){
    exec('clear', function(error, stdout, stderr){
        util.puts(stdout);
    });    
}
Abel Terefe
fuente
3
supongo que necesitaría "cls" para Windows ya que "clear" es un comando * nix.
Steven Vachon
Sin embargoclear || cls||
godblessstrawberry
7

A partir de Node.JS v8.3.0 , puede usar el método clear :

console.clear()
Alex K
fuente
Vine aquí porque esto es lo que ya hice y en realidad funciona de manera inconsistente (
godblessstrawberry
5

Para resolver problemas con el modo estricto:

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

Si está usando VSCode, puede usar CTRL + K. Sé que esta no es una solución genérica, pero puede ayudar a algunas personas.

Hexodus
fuente
También funciona en PHPStorm. Ctrl+Kparece ser la única solución, cuando node.js no restaura la consola en la siguiente ejecución.
bencergazda
1

Basado en la respuesta de sanatgersappa y otra información que encontré, esto es lo que se me ocurrió:

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

Para facilitar las cosas , lo publiqué como un paquete npm llamado cli-clear .

Steven Vachon
fuente
Un poco de diversión: con "\u001b[32;1m"puede establecer incluso el color del texto (en la línea de comandos de Windows) (- código de deshacer :)"\u001b\x1b[0m" más información: termsys.demon.co.uk/vtansi.htm y en.wikipedia.org/wiki/ANSI_escape_code
1

Puedes usar el readlinemódulo:

readline.cursorTo(process.stdout, 0, 0) mueve el cursor a (0, 0).

readline.clearLine(process.stdout, 0) borra la línea actual.

readline.clearScreenDown(process.stdout) borra todo lo que esté debajo del cursor.

const READLINE = require('readline');

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

No pude hacer que nada de lo anterior funcione. Estoy usando nodemon para el desarrollo y encontré que esta es la forma más fácil de borrar la consola:

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

Simplemente desplaza la consola varias líneas para que tenga una pantalla clara para los siguientes comandos de console.log.

Espero que ayude a alguien.

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

Este código funciona bien en mi consola de servidor node.js Windows 7.

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

SkySibe
fuente
0

En mac, simplemente uso Cmd + K para borrar la consola, muy útil y mejor que agregar códigos dentro de su proyecto para hacerlo.

Smartniggs
fuente
-1

Tarde, pero ctrl + l funciona en Windows si está usando powershell :) Powershell + chocolatey + node + npm = win.


fuente
-1

En mi caso, lo hice para hacer un bucle para siempre y mostrar en la consola un número siempre en una sola línea:

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

Cuando ejecute este código, verá el mismo mensaje "Número de mensajes en la cola Cola de prueba: 1." y el cambio de número (1..2..3, etc.).

Jean J. Michel
fuente
-2

Ctrl + L Esta es la mejor opción, la más simple y la más efectiva.

AmishJohn81
fuente