nodejs stdin可读事件未触发

时间:2013-08-18 05:11:56

标签: node.js node.js-stream

readable

中未触发process.stdin事件

test.js

var self = process.stdin, data ;

self.on('readable', function() {
    var chunk = this.read();
    if (chunk === null) {
        handleArguments();
    } else {
       data += chunk;
    }
});

self.on('end', function() {
   console.log("end event",data )
});

然后当我执行node test.js并开始在控制台中输入时,readable事件根本不会被触发。

请告诉我如何将readable侦听器附加到process.stdin流。

1 个答案:

答案 0 :(得分:1)

如果您尝试捕获键入的内容,请尝试以下步骤

process.stdin.resume();

process.stdin在暂停状态下启动。您需要将其置于就绪状态。 监听'data'事件以捕获在控制台中输入的数据。

process.stdin.on('data', function(data) {       
    console.log(data.toString());    
}); 

我不确定这是否有助于你的实际问题。至少它可以为你提供一些见解。

其他信息:

readable事件在Node.js v0.9.4中引入。因此请检查您使用的节点是否为gte 0.9.4。

来自节点api docs的注释:

如果使用setEncoding(),'data'事件会发出Buffer(默认情况下)或字符串。

请注意,添加“数据”事件侦听器会将可读流切换为“旧模式”,其中数据一旦可用就会发出,而不是等待您调用read()来使用它。