Tengo una sencilla aplicación generadora de perfiles de empleados. Todo funciona como se esperaba hasta la promesa de generatePage(employeeData). La consola registra correctamente employeeData pero no se pasa a generatePage. ¿Alguien tiene idea de por qué? También he incluido una imagen del código inicial para generar-page.js y el mensaje de error de la consola "indefinido".
const {writeFile, copyFile} = require('./utils/generate-site.js'); const generatePage = require('./src/page-template.js'); const mockData = [ { // lots of mock data objects here }, ] let employeeData = mockData; function init() { return inquirer.prompt(questions.startQuestions); } function getEmployeeData(answers) { if (answers.role === 'Engineer') { let engineer = new Engineer ( answers.name, answers.id, answers.email, answers.role ) return getEngineerData(engineer); } else if (answers.role === 'Intern') { let intern = new Intern ( answers.name, answers.id, answers.email, answers.role ) return getInternData(intern) } else if (answers.role === 'Manager') { let manager = new Manager ( answers.name, answers.id, answers.email, answers.role ) return getManagerData(manager) } } function getEngineerData(engineer) { return new Promise((resolve) => { resolve ( inquirer.prompt(questions.engineerQuestions) .then ((response) => { engineer = {...engineer, ...response}; // console.log(engineer) employeeData.push(engineer) } ) ) }) } function getInternData(intern) { return new Promise((resolve) => { // same as getEngineerData function }) } function getManagerData(manager) { return new Promise((resolve) => { // same as getEngineerData function }) } function confirm() { return inquirer.prompt(questions.confirmQuestion) } function buildTeam() { init() .then(answers => getEmployeeData(answers)) .then(confirm) .then(response => response.confirmAdd ? buildTeam() : console.log(employeeData)) .then(employeeData => generatePage(employeeData)) .then(pageHTML => { return writeFile(pageHTML) }) .then (writeFileResponse => { console.log(writeFileResponse); return copyFile() }) .then(copyFileResponse => { console.log(copyFileResponse); }) .catch (err => { console.log(err); }); } buildTeam();console.log devuelve "indefinido", por lo que la solución fue devolver la matriz employeeData en la cadena de promesa para transmitir.
.then(response => { if (response.confirmAdd) { buildTeam() return employeeData } else { return employeeData } })