1

我有一个非常基本的 readline 实现,它似乎有一个问题,当我写入写入的数据时出现在输入中并引发“行”事件。这一切都在一个标准的 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(string);

来自套接字 i/o。写入引发“行”事件,写入的数据显示为未知命令。

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

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

谢谢

4

1 回答 1

4

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

以前terminal: false会导致输出有一个尾行,强制行事件触发。所以你可以给它 true 来避免这种情况,但现在它已经改变了,所以改变选项将无济于事。

请参阅提出的问题。最后的评论说同样的话。

于 2013-05-04T22:22:17.943 回答