node.js readline - 写入数据出现在输入中

时间:2013-05-04 21:06:15

标签: node.js readline

我有一个非常基本的readline实现,这似乎有一个问题,当我写入写入的数据出现在输入中并引发'line'事件。这都在标准的linux rxvt窗口中。

var rl  readline.createInterface({
    input: process.stdin,
    output: process.stdout,
//    terminal: false   <--- setting true/false makes no difference
});

rl.on('line', function(line) {
    var inp = line.trim();
    console.log('line event');
    switch(inp) {
        case   ....
    default:
       console.log('Unknown command: ' + inp + '\n');
    }
});

然后     rl.write(字符串);

来自socket i / o。写入引发'line'事件,写入的数据作为未知命令出现。

如果我在终端上输入数据,它会按预期引发'line'事件并且正常工作。

显然,写入的数据不应出现在输入上,并询问可能是什么原因。

由于

1 个答案:

答案 0 :(得分:4)

实际上rl.write会触发直线事件。它应该在文档中,但事实并非如此。如果你想绕过解析器,只需写入process.stdout。

以前terminal: false会导致输出具有尾随结束,强制执行行事件触发器。所以你可以真实地避免这种情况,但现在它已被改变,所以改变选项无济于事。

查看已提升的issue。最后的评论也是如此。