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

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

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.


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

¿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.


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

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

Este funcionó y no desencadenó un error JSDoc
James Cameron

También funcionó en todas las plataformas (CMD, Cmder, GitBash, Ubuntu).
Valentin P


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

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

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

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.


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 .


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

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.


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


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.


-1

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


-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.).


-2

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.