写入产生的进程stdin nodejs?

我有一个脚本,我想从另一个运行。 问题在于子脚本(进程)在继续之前需要用户input。

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

input我的数据后,子脚本应该继续,而是挂在那里。

其实上面的代码适合我。 我在子脚本中使用commander.js来提示用户采取行动。 以下是我如何回应小孩的脚本提示:

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

同样的事情与假设 :

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

你可以使用包装suppose 。 这就像Unix期待 。 充分披露,我是作者。

从Github页面的示例中,您可以看到一个脚本编写NPM的示例: https : //github.com/jprichardson/node-suppose

例:

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