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将不起作用。