可以在运行的nodejs脚本中监听传入的击键吗?

// 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

我在找一个相当于getc in ruby的nodejs

这可能吗?

推荐答案

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

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();
});

Node.js相关问答推荐

MongoServelSelection错误:服务器 Select 在30000 ms后超时

Windows上使用ES6+的OpenAPI规范的Express服务器不接受嵌套路由'

购物车是空的状态|本地存储不更新产品数量|Redux|

为什么我收到此错误:MissingSchemaError:架构尚未为模型&业务&注册

获取页面大小为10的所有文章,每篇文章填充一些所需的用户信息

FiRestore UPDATE方法引发错误:&Quot;错误:13内部:收到代码为1&Quot;的RST_STREAM

Sequelize、postgres和posgis:在n°;公里

如何发送比特币BTC使用发送加密使用WIF密钥在 node ,js

如何使用Next.js/Node/TS正确地上传至S3

为什么它无法发送发布请求并更改为 chrome 中的获取方法?

MongoDB Atlas中的聚合触发器不起作用

2 x 匹配标准显示没有结果

如何从 github 编译第三方扩展?

等到文件上传完成的有效方法(mongoose )

使用 $in 查询时,如何获取 mongoDB 中每个唯一 ID 的 n 个文档?

为当前目录提供服务的简单文件服务器

使用 MongoDB 更新嵌套数组

如何让should.be.false语法通过 jslint?

Node.JS 中的基本 HTTP 身份验证?

User.findOrCreate 函数是做什么的,什么时候在Passport 中调用它?