Node.js модуль readline: прекратите перепечатывать только что прочитанную строку

#node.js #stdin

#node.js #stdin

Вопрос:

Я использую readline модуль в узле (12) для приема пользовательского ввода как такового:

 import * as readline from "readline";

process.stdin.setEncoding('utf-8');
console.log("input is a TTY?",process.stdin.isTTY);

const rl = readline.createInterface({input: process.stdin, output: process.stdout, prompt: '> '});
rl.prompt();
rl.on('line' ,inputLine => { inputStringLines.push(inputLine); rl.prompt(); });
rl.on('close',() => { console.log('input has closed'); main(); });
 

Строки правильно записаны в мой inputStringLines массив, но, к сожалению, процесс распечатывает каждую только что прочитанную строку:

введите описание изображения здесь

Как я могу избавиться от лишних строк (без > подсказки)

Ответ №1:

Я исправил это, изменив способ запуска моего скрипта. Раньше я использовал nodemon -r ts-node/register опцию with node . Проблема исчезла, когда я переключился на использование ts-node-dev для выполнения скрипта.

Также обратите внимание, что process.stdin.isTTY теперь она установлена правильно, тогда как раньше она не была определена (посмотрите на первую строку на изображении ниже, против в исходном сообщении)

введите описание изображения здесь

Все еще не знаю основной причины, но я рад двигаться дальше.