Readline, как и многие другие модули, асинхронный . Это означает, что он не блокирует выполнение вашего кода во время ожидания данных. Итак, вы начали прослушивать строку, но не дожидались окончания отправки данных sh для вызова res.send(data)
. Что вы хотите сделать, это изменить строку:
res.send(data);
на
r1.on("close", function() {
res.send(data);
});
, чтобы вы знали, что данные были получены. Затем, когда вы вводите данные с консоли, вы можете нажать Ctrl+D
, чтобы показать, что все строки были отправлены. Если вы хотите получить только одну строку, вам не нужно ждать события close
, вы можете просто переместить res.send(data)
в обработчик строки.