É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.
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?
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");
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');
}
process.stdout.write('\033c');
Cela fonctionne également sur les fenêtres. Win7 au moins.
Ceci efface la console sous Windows et place le curseur à 0,0:
var util = require('util');
util.print("\u001b[2J\u001b[0;0H");
process.stdout.write("\u001b[2J\u001b[0;0H");
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.
Et pour effacer la console en mode strict sous Windows:
'use strict';
process.stdout.write('\x1Bc');
j'utilise un windows CMD et cela a fonctionné pour moi
console.clear();
Il suffit d'utiliser CTRL + L
sur Windows pour vider la console.
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);
});
}
Pour résoudre les problèmes en mode strict:
'use strict';
process.stdout.write('\x1B[2J');
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.
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.
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()
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 .
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.).
En retard, mais ctrl + l fonctionne dans Windows si vous utilisez powershell :) Powershell + chocolatey + node + npm = gagnant.
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");