Écrire pour générer le processus stdin nodejs?

J’ai un script que je veux exécuter d’un autre. Le problème est que le script enfant (processus) a besoin d’une entrée utilisateur avant de continuer.

var child = spawn('script'); child.stdin.setEncoding('utf8'); child.stdout.on('data', function (data) { console.log(data.toSsortingng().sortingm()); // tells me to input my data child.stdin.write('my data\n'); }); 

Une fois mes données saisies, le script enfant doit continuer, mais il rest bloqué.

Solution

En fait, le code ci-dessus fonctionne pour moi. J’utilise commander.js dans le script enfant pour inviter l’utilisateur à agir. Voici comment je réponds à l’invite de script d’un enfant:

 child.stdout.on('data', function (data) { switch (data.toSsortingng().sortingm()) { case 'Username:': child.stdin.write('user'); break; case 'Password:': child.stdin.write('pass'); break; } }); 

Même chose avec supposer :

 var suppose = require('suppose'); suppose('script') .on('Username: ').respond('user') .on('Password: ').respond('pass') .error(function (err) { console.log(err.message); }) .end(function (code) { console.log(code); done(); }); 

Vous pouvez utiliser le paquet suppose . C’est comme Unix Expect . Divulgation complète, je suis l’auteur.

Dans l’exemple de la page Github, vous pouvez voir un exemple de script NPM: https://github.com/jprichardson/node-suppose

Exemple:

 var suppose = require('suppose') suppose('script') .on(/\w*/).respond('my data\n') .end(function(code){ console.log('Done: ' + code); })