2013-05-04 3 views
1

У меня есть очень простая реализация readline, которая, похоже, имеет проблему, когда при записи письменных данных появляется входной сигнал и возникает событие «line». Это все в стандартном окне linux rxvt.node.js readline - запись данных появляется во вводе

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 (строка);

сокета i/o. Запись вызывает событие «строка», и записанные данные появляются как неизвестная команда.

Если я ввожу данные на терминал, он вызывает событие «line», как ожидалось, и работает нормально.

Очевидно, что данные не должны появляться на входе и спрашивать, что может быть причиной этого.

Благодаря

+0

Какова версия вашего узла? – user568109

ответ

4

На самом деле rl.write вызовет событие линии. Это должно быть в документах, но это не так. Если вы хотите обойти парсер просто написать process.stdout.

Раньше terminal: false приводил к выводу выходного конца конечной линии, вызывающего триггер события линии. Таким образом, вы можете сказать правду, чтобы избежать этого, но теперь он был изменен, поэтому изменение опции не поможет.

См. Повышенные issue. Последний комментарий говорит то же самое.

+0

Спасибо за это. Меня заинтриговало «по дизайну». Кажется, меня раздражает. – nottledim

+0

Рад, что это помогло. Пришлось тратить часы на это сам. – user568109

Смежные вопросы