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 に答える