Nodejs:npm 查询器无法正常工作的类型输入问题

Nodejs: question of type input with npm inquirer not working

我是第一次使用 npm inquirer

我使用的代码与此类似:

const inquirer = require("inquirer");

const questions = [
  {
    type: "checkbox",
    name: "collections.telemetria",
    message: "Select collections of database telemetria",
    choices: [
      "chimera-11/14/2019,-4:22:38-PM",
      "chimera-11/14/2019,-4:28:26-PM"
    ]
  },
  {
    type: "checkbox",
    name: "collections.testa",
    message: "Select collections of database testa",
    choices: ["testa_c"]
  }
];

async function main() {
  const collections = (await inquirer.prompt(questions)).collections;
  console.log("collections:", collections);
  const outPath = await inquirer.prompt([
    {
      type: "input",
      name: "outPath",
      default: "./",
      message: "Insert the output path"
    }
  ]).outPath;
  console.log(outPath);
}
main();

问题是在回答type input的问题时,出现undefined字样,无法输入。

这是一个代码沙箱:https://codesandbox.io/s/stoic-kowalevski-dgg5u

问题出在 console.log(outPath) 上,因为 returns undefined 导致 terminal 无法使用。删除 console.log(outPath) 它应该可以工作。

我不太确定 .outPath 最后的作用,但您可以删除它以使 console.log(outPath) 正常工作。

所以根据需要删除 console.log().outPath

你可能已经知道 inquirer.prompt returns 一个承诺,如果你想要结果,你可以这样做

      const outPath = inquirer.prompt([
        {
          type: "input",
          name: "outPath",
          default: "./",
          message: "Insert the output path"
        }
      ]).then(response=>{
           console.log(response)
})

在这里你可以看到它为我运行 如果我删除 .outPath

感谢Shivam Sood的指点,发现只是代码有误。在调用预期结果的 属性 outPath 之前,我忘记将 await inquirer.prompt([...]) 放在括号内。

所以正确的代码应该是:


const outPath = (await inquirer.prompt([
    {
      type: "input",
      name: "outPath",
      default: "./",
      message: "Insert the output path"
    }
  ])).outPath;
  console.log(outPath);