Я пытаюсь собрать пользовательский ввод из командной строки, чтобы создать простое приложение интерфейса командной строки. Я использую функцию standard_input.on()
, чтобы иметь возможность захватить ввод пользователя и использовать его, чтобы определить, какой ответ пользователь должен увидеть в своей командной строке. Захваченные данные не читаются должным образом в функции обратного вызова. Ниже приведен код.
const fs = require("fs"),
path = require("path");
const dir = path.resolve(__dirname);
var standard_input = process.stdin;
standard_input.setEncoding('utf-8');
console.log("Please type yes or no.");
standard_input.on('data', function (data) {
if(data === 'yes'){
console.log("OK I will.");
process.exit();
} else if (data === 'no') {
console.log("OK I won't.");
process.exit();
} else {
console.log("Please enter yes or no.");
}
});
Первое приглашение "Please type yes or no."
выполняется правильно, и я могу ввести в командной строке, но когда я набираю yes
или no
, оно отвечает приглашением else
: Please enter yes or no.
Я пробовал yes
, YES
, 'yes'
и 'YES'
, а также четыре одинаковых формата для no
. Я также попытался изменить строку if(data === 'yes')
на все четыре формата, а также if(data === 'yes\n')
на случай, если ввод сбрасывал условие.
Также, когда я console.log(data)
записывает правильные данные. Поэтому, если я наберу yes
, функция обратного вызова запишет yes
. Похоже, что он работает правильно, кроме фактической if/else
оценки, он работает только с последним оператором else
.
В настоящее время я работаю на v8.11.1 Node.