在 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 并在需要时编译打字稿
我正在尝试从 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 并在需要时编译打字稿