node.js如何使用child_process.exec显示stdininput
我有一个node.js脚本使用child_process.exec来调用npm adduser
。 通常情况下,如果我把npm adduserinput到控制台,我会得到:
用户名:[stdin提示符]
密码:[stdin提示符]
等等
如果我使用node.js来执行这个代码,那么没有任何东西会被打印出来,它只会被卡在一个空的提示符下,这个提示符会一直持续下去,直到我按下ctrl-C。
我如何获得通常的行为? 我基本上只是想执行bash,让它做它的事情…
因此,不用exec
用于运行程序而不进行任何复杂的stdio交互的exec
,使用child_process.spawn
可以访问npm进程的stdio,并且可以调用child.stdin.write(username + "\n")
孩子的stdin
文件(以及类似的密码)。 这可能足以让事情继续下去,但有时当程序期望用户交互式input时,以编程方式模拟可能会非常棘手(因此存在预期之类的事情)。
我认为npm
(通过“读取”npm模块)是从标准input读取没有回声,在这种情况下,这应该工作。 但是,如果直接从tty设备读取,则写入stdin将不起作用。