Node.js 使用process.stdin捕获原始键盘';你不能按预期工作吗?

Node.js 使用process.stdin捕获原始键盘';你不能按预期工作吗?,node.js,stdin,Node.js,Stdin,在windows上捕获终端中的原始键盘输入时遇到问题。这让我抓狂,因为我知道我已经用旧版本的nodejs实现了这一点(一年多以前) 使用最新版本的NodeJS(当前使用4.2.2),捕获输入似乎有问题。。除非我遗漏了什么 我正在跑步的内容: stdin = process.stdin; stdin.on('data', function (data) { if (data == '\u0003') { process.exit(); } process.stdout.write(

在windows上捕获终端中的原始键盘输入时遇到问题。这让我抓狂,因为我知道我已经用旧版本的nodejs实现了这一点(一年多以前)

使用最新版本的NodeJS(当前使用4.2.2),捕获输入似乎有问题。。除非我遗漏了什么

我正在跑步的内容:

stdin = process.stdin;
stdin.on('data', function (data) {
    if (data == '\u0003') { process.exit(); }
    process.stdout.write('Captured Key : ' + data + "\n");
});
stdin.setEncoding('utf8');
stdin.setRawMode(true);
stdin.resume();
我所期待的:

stdin = process.stdin;
stdin.on('data', function (data) {
    if (data == '\u0003') { process.exit(); }
    process.stdout.write('Captured Key : ' + data + "\n");
});
stdin.setEncoding('utf8');
stdin.setRawMode(true);
stdin.resume();
运行后,程序应立即对按下的任何键作出反应,并输出:

Captured Key : T
Captured Key : E
Captured Key : S
. . . etc
我得到的:

stdin = process.stdin;
stdin.on('data', function (data) {
    if (data == '\u0003') { process.exit(); }
    process.stdout.write('Captured Key : ' + data + "\n");
});
stdin.setEncoding('utf8');
stdin.setRawMode(true);
stdin.resume();
运行程序后,第一个键盘输入的行为就好像未在Raw中捕获到它一样,它被捕获并显示在屏幕上

然后,当我按下回车键时,我刚才键入的文本被推送到处理函数,,然后程序将按照预期接受进一步的原始输入

看起来程序需要输入键才能启动正确的原始模式输入模式

与pic相关的:我键入了测试(回车)。然后程序按预期工作


有人知道这是怎么回事吗?我什么也找不到。此外,我不想使用任何外部库。谢谢

我也想得到一个答案。我在Windows Server 2012 R2上的节点v0.10.46中遇到了完全相同的行为。