Событие для чтения нода stdin не вызвано

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 ответ

Решение

Если вы пытаетесь захватить то, что вы печатаете на консоли, попробуйте эти шаги,

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:

Событие data генерирует либо Buffer (по умолчанию), либо строку, если используется setEncoding ().

Обратите внимание, что добавление прослушивателя событий "data" переключит поток Readable в "старый режим", где данные отправляются, как только они становятся доступными, вместо того, чтобы ждать, пока вы вызовете read () для его использования.

Другие вопросы по тегам