一尘不染

nodejs如何从stdin中读取击键

node.js

是否可以在正在运行的nodejs脚本中侦听传入的击键?如果我使用process.openStdin()并监听其'data'事件,则输入将被缓冲到下一个换行符,如下所示:

// stdin_test.js
var stdin = process.openStdin();
stdin.on('data', function(chunk) { console.log("Got chunk: " + chunk); });

运行此,我得到:

$ node stdin_test.js
                <-- type '1'
                <-- type '2'
                <-- hit enter
Got chunk: 12

我想要看的是:

$ node stdin_test.js
                <-- type '1' (without hitting enter yet)
 Got chunk: 1

我正在寻找一个等效于例如ruby的nodejsgetc

这可能吗?


阅读 278

收藏
2020-07-07

共1个答案

一尘不染

如果切换到原始模式,则可以通过这种方式实现:

var stdin = process.openStdin(); 
require('tty').setRawMode(true);

stdin.on('keypress', function (chunk, key) {
  process.stdout.write('Get Chunk: ' + chunk + '\n');
  if (key && key.ctrl && key.name == 'c') process.exit();
});
2020-07-07