inquirer .prompt([ { name: 'name', message: 'Enter team members name.', }, { name: 'role', type: 'list', message: 'Enter a team members role', choices: [ 'Engineer', 'Manager', 'Intern' ], }, { name: 'id', message: 'Please enter team members id', type: 'input' }, { name: 'email', message: 'Please enter team members email' } ]) .then(function(data){ let moreRole = ''; if (data.role === 'Engineer') { moreRole = 'Github username.' }else if(data.role === 'Intern') { moreRole = 'school name.' }else { moreRole = 'office Number.' } }) inquirer .prompt([ { message: `Enter team members ${moreRole}`, name: 'moreRole' }, { type: 'list', message: 'Would you like to add another team member?', choices: [ 'Yes', 'No' ], name: 'anotherMember' } ]) .then(moredata => { console.log(moredata) });Entonces, el primer investigador funciona, pero cuando agrego el segundo y lo ejecuto. No funciona correctamente. ¿No puedo usar dos buscadores espalda con espalda? ¿Cómo haría para que funcione? En la consola solo me hace la primera pregunta y vuelve a salir y no me deja responderla.
La API del paquete se basa en Promises. La primera llamada inquirer.prompt el primer aviso, pero dado que está utilizando la forma then de manejar las Promesas resueltas, no está esperando a que se complete la operación, simplemente pasa a la segunda llamada inquirer.prompt .
Para omitir esto, puede envolver su código en una función async y anteponer await a cada inquirer.prompt (o al menos a todos excepto al último).
Debería verse algo como esto:
async function callInquirers() { const inq1 = await inquirer.prompt([...]); const inq2 = await inquirer.prompt([...]); // do stuff with results inq1 and inq2 }Consulte los documentos de Promises, event loop, async/await si desea obtener más información sobre este asunto.