在 NodeJS 中获取自动输入

Getting Unprompted Input in NodeJS

我正在尝试从 NodeJS 服务器中获取用户的自动输入。原因是我希望能够在服务器 运行 时发送可以解释为命令的字符串,例如刷新缓存的命令。

现在,原来我是这样使用readline的:

import * as ReadLine from 'readline';

export default function InitTerminal() {
    const terminal = ReadLine.createInterface({
        input: process.stdin,
        terminal: false
    });

    terminal.on('line', (input) => {
        console.log(input);
        switch(input.toString()) {
            default:
                console.log('Unknown Command');
                break;
        }
    });
}

问题是在大多数输入之后,我会得到:

rl.on line * input *

其中 * input * 指的是来自 process.stdin 的缓冲区输入的字符串表示形式。奇怪的是,在线只会偶尔触发,通常我会收到那条线,而我的听众不会触发。当我不使用 ReadLine 而只是向 process.stdin 添加一个侦听器时,也会发生同样的事情。某些东西正在触发节点打印出上面的输出。我在开发模式下使用 node 11.12.0 和 ts-node-dev 作为打字稿。

所以我想问的是如何使用节点将自动输入作为命令获取?通过修改我的原始代码或任何我没有想到的方式。

谢谢。

问题是 ts-node-dev 使用标准输入。这意味着在使用它时很难获得标准输入。我要做的是创建一个名为 build:dev 的 npm 脚本,它编译我的打字稿,然后 运行 它。然后我可以放心地使用process.stdin。

一种在执行此操作时可能会监视更改的方法是使用 nodemon 而不是 ts-node-dev 并在需要时编译打字稿