Node.js свойство readline не запрашивает ввод

#node.js

#node.js

Вопрос:

Node.js свойство readline не останавливается для ввода, вместо этого продолжает программу, вызывая сбой приложения. Пытаясь решить эту проблему, я обнаружил, что, по-видимому, node выполняет весь код одновременно и из-за этого не останавливается для ввода. Я нашел способы запустить этот код, но у меня они не сработали.

 const rl = readline.createInterface({
 input: process.stdin, 
 output: process.stdout
});

var token;
var pass;
rl.question('token: ', (tok) => {
  token = tok;
  rl.close();
});

rl.question('pass: ', (pas) => {
  pass = pas;
  rl.close();
});
  

Что я могу сделать, чтобы решить эту проблему?

Ответ №1:

Я надеюсь, что вы смотрите что-то вроде приведенного ниже:

 const readLine = require('readline');
const util = require('util')
const { promisify } = util;

const readline = readLine.createInterface({
      input: process.stdin,
      output: process.stdout,
    });

// Prepare readline.question for promisification

readline.question[util.promisify.custom] = (question) => {
  return new Promise((resolve) => {
    readline.question(question, resolve);
  });
};


let questionPs =  promisify(readline.question);

 async function askQuestions (questions,readline) {
  
 let answers= [];
 for(let i=0;i<2;i  ){
 let tmp = await questionPs(q[i]);
 answers.push(tmp)
 
 }
  console.log(answers);
  readline.close();
}
// Usage example:
let q =  ['token:','pass:']
askQuestions(q,readline)