appuyez sur n'importe quelle touche pour continuer dans nodejs
J'ai besoin d'une fonction qui permettra de mettre en pause l'exécution du script jusqu'à ce qu'une touche est enfoncée.
J'ai essayé:
var stdin = process.openStdin();
require('tty').setRawMode(true);
stdin.on('keypress', function (chunk, key) {
process.stdout.write('Get Chunk: ' + chunk + '\n');
if (key && key.ctrl && key.name == 'c') process.exit();
});
mais c'est juste à l'écoute pour une pression de touche et rien ne se passe. Le programme ne prend pas en poursuivre l'exécution.
Comment puis-je suspendre l'exécution?
Avez-vous de cette fonction dans une boucle? Aussi, êtes-vous essayer de pause fonctions synchrones ou asynchrones fonctions?
Vous ne pouvez pas suspendre l'exécution de script qui s'exécute en arrière-plan. Mais je ne pense pas que c'est le point, vous avez besoin d'interrompre le processus.stdin/stdout. Vous pouvez regarder dans readline le paquet.
Vous ne pouvez pas suspendre l'exécution de script qui s'exécute en arrière-plan. Mais je ne pense pas que c'est le point, vous avez besoin d'interrompre le processus.stdin/stdout. Vous pouvez regarder dans readline le paquet.
OriginalL'auteur Barterio | 2013-10-30
Vous devez vous connecter pour publier un commentaire.
Fonctionne pour moi:
Vous pouvez poster votre question avec un peu de code? Je serai heureux d'y répondre, si je peux
Ce n'est pas une solution à la question, cela tue le programme sur une touche, la question était de mettre en pause et de reprendre ensuite sur une touche.
Je suis dans le
process.stdin.setRawMode(true)
TypeError: Object #<Socket> has no method 'setRawMode'
Vous devez mettre de processus.stdin.setRawMode=true à la place de la fonction
OriginalL'auteur vkurchatkin
Dans node.js 7.6 et plus tard, vous pouvez le faire:
Ou si vous voulez CTRL-C pour quitter le programme, mais n'importe quelle autre touche pour continuer l'exécution normale, alors vous pouvez remplacer le "keypress" fonction ci-dessus avec cette fonction à la place:
ES6
pourtsconfig,json
et changementthen(process.exit)
àthen(()=>process.exit(0))
.OriginalL'auteur molsson
Cet extrait fait le travail si vous ne voulez pas quitter le processus:
Il est asynchrone, donc ne fonctionne pas à l'intérieur de la boucle tant que-est-- si vous êtes à l'aide d'un Noeud 7 vous pourriez l'envelopper dans une promesse et l'utilisation
async/await
.OriginalL'auteur NeonPaul
La solution retenue attend de façon asynchrone pour un événement clé, puis se ferme, c'est pas vraiment une solution à "Appuyez sur une touche pour continuer".
J'avais besoin d'une pause lors de l'écriture de certains de nodejs des scripts shell. J'ai fini par utiliser la spawnSync de la child_process avec la commande shell "lire".
Ce sera essentiellement interrompre le script et lorsque vous appuyez sur Entrée, il continuera. Un peu comme la commande pause dans windows.
Espère que cette aide.
OriginalL'auteur Ralph
Cette réponse est la prise de vadzim de node.js: readSync à partir de stdin?
OriginalL'auteur Wong Jia Hau
Il y a un paquet pour cette:
appuyez sur-toute-la clé de
Et en voici un exemple:
Il fonctionne sans problèmes dans W10.
OriginalL'auteur Josem
J'ai effectivement fait un mnp paquet appelé
paktc
qui va vous aider avec ceci. Si vous installez le paquet:Alors que vous pouvez l'utiliser comme ceci:
Quelle partie? Obtenez-vous un message d'erreur ou quoi que ce soit? Pouvez-vous être plus précis, ce n'est pas de travail? Vous pouvez déposer un bug ici: github.com/justinmchase/paktc/issues
C'est
WebStrom
console problèmePaktc ne fonctionne pas du tout, il dépend d'un mondial appelé
v8debug
qui ne se soucient pas de recherche, mais ce n'est pas normale dans un nœud de l'environnement.C'est seulement lorsqu'un débogueur est réellement attaché. Juste essayé de nouveau dans le nœud 5, fonctionne toujours.
OriginalL'auteur justin.m.chase