0

我是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();

问题是,当涉及到要回答的类型输入的问题时,出现了 undefined 这个词,我无法输入任何内容。

在此处输入图像描述

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

4

2 回答 2

0

感谢Shivam Sood的建议,我发现代码中只有一个错误。在调用预期结果的属性之前,我忘了把await inquirer.prompt([...])括号放在里面。outPath

所以正确的代码应该是:


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

于 2019-11-24T14:47:40.633 回答
0

问题console.log(outPath)在于返回undefined使terminal不可用。删除 console.log(outPath)它应该可以工作。

我不确定.outPath最后会做什么,但您可以删除它以使其console.log(outPath)正常工作。

所以要么删除console.log(),要么.outPath根据要求。

正如您可能已经知道的那样,inquirer.prompt如果您想要结果,它会返回一个承诺,您可以做这样的事情

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

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

代码运行

于 2019-11-23T22:27:20.337 回答