簡體   English   中英

嘗試根據用戶選擇轉到第二個詢問者提示

[英]Trying to goto second inquirer prompt depending on user selection

訓練營學生在這里。 我正在嘗試一起生成團隊資料。 輸入經理信息后,我可以決定是否要添加工程師、實習生或不再添加。 但是,當我選擇“工程師”選項時,應用程序應該顯示另一個詢問者提示以輸入工程師信息。 目前的代碼不允許我這樣做,實際上是在終端上結束了這個過程。 我哪里做錯了?

const inquirer = require("inquirer");
const fs = require("fs");
const path = require("path");

const Engineer = require("./lib/Engineer");
const Intern = require("./lib/Intern");
const Manager = require("./lib/Manager");

const DIST_DIR = path.resolve(__dirname, "dist");
const distPath = path.join(DIST_DIR, "team.html");

const render = require("./src/renderHTML");

let teamMembers = [];
let teamIDs = [];

function startApp() {
  function addManager() {
    inquirer
      .prompt([
        {
          type: "input",
          name: "managerName",
          message: "What is the your name?",
          validate: (input) => {
            if (input) {
              return true;
            } else {
              console.log("Please enter your name to continue!");
              return false;
            }
          },
        },    (other questions here)
      ])
      .then((answers) => {
        const manager = new Manager(
          answers.managerName,
          answers.managerID,
          answers.managerEmail,
          answers.managerOffice
        );
        teamMembers.push(manager);
        teamIDs.push(answers.managerID);
        addTeamMember();
      });
  }

  function addTeamMember() {
    inquirer
      .prompt([
        {
          type: "list",
          name: "member",
          message: `Select which team member you'd like to add to your team!`,
          choices: ["Engineer", "Intern", "No team members to add"],
        },
      ])
      .then((answers) => {
        switch (answers.memberChoice) {
          case "Engineer":
            generateEng();                 <----- This is the area I'm having trouble with
            break;                      When I select Engineer, it should run generateEng()
          case "Intern":                But is instead stopping code execution, via terminal
            generateInt();
            break;
          default:
            makeTeam();
        }
      });
  }

  function generateEng() {
    inquirer
      .prompt([
        {
          type: "input",
          name: "engName",
          message: `What is the engineer's name?`,
          validate: (input) => {
            if (input) {
              return true;
            } else {
              console.log("Please enter the engineer's name to continue!");
              return false;
            }
          },
        },  (other questions here)
      ])
      .then((answers) => {
        const engineer = new Engineer(
          answers.engName,
          answers.engID,
          answers.engEmail,
          answers.engGithub
        );
        teamMembers.push(engineer);
        teamIDs.push(answers.engID);
        addTeamMember();
      });
  }

  function generateInt() {
    inquirer
      .prompt([
        {
          type: "input",
          name: "Name",
          message: `What is the intern's name?`,
          validate: (input) => {
            if (input) {
              return true;
            } else {
              console.log("Please enter the intern's name to continue!");
              return false;
            }
          },
        }, (other questions here)
      ])
      .then((answers) => {
        const intern = new Intern(
          answers.intName,
          answers.intID,
          answers.intEmail,
          answers.intGithub
        );
        teamMembers.push(intern);
        teamIDs.push(intID);
        addTeamMember();
      });
  }

  function makeTeam() {
    fs.writeFileSync(distPath, render(teamMembers), "utf-8");
  }

  addManager();
}

startApp();

而不是 answers.memberChoice 它應該是 answers.member

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM