Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何清除Inquirer.js中的错误输入 const inquirer=require(“inquirer”) 变量问题=[ { 键入:“数字”, 姓名:“姓名”, 信息:“请输入玩家数量”, 验证:函数(名称){ var valid=Number.isInteger(名称) return valid | | `请输入一个有效的整数` }, }, ] 函数promptUser(){ 询问者 .提示(问题) 。然后((答案)=>{ log(`您输入了${answers[“name”]}!`) }) .catch((错误)=>console.log(`Please enter a number`) } 提示用户()_Javascript_Command Line Interface_Inquirer_Inquirerjs - Fatal编程技术网

Javascript 如何清除Inquirer.js中的错误输入 const inquirer=require(“inquirer”) 变量问题=[ { 键入:“数字”, 姓名:“姓名”, 信息:“请输入玩家数量”, 验证:函数(名称){ var valid=Number.isInteger(名称) return valid | | `请输入一个有效的整数` }, }, ] 函数promptUser(){ 询问者 .提示(问题) 。然后((答案)=>{ log(`您输入了${answers[“name”]}!`) }) .catch((错误)=>console.log(`Please enter a number`) } 提示用户()

Javascript 如何清除Inquirer.js中的错误输入 const inquirer=require(“inquirer”) 变量问题=[ { 键入:“数字”, 姓名:“姓名”, 信息:“请输入玩家数量”, 验证:函数(名称){ var valid=Number.isInteger(名称) return valid | | `请输入一个有效的整数` }, }, ] 函数promptUser(){ 询问者 .提示(问题) 。然后((答案)=>{ log(`您输入了${answers[“name”]}!`) }) .catch((错误)=>console.log(`Please enter a number`) } 提示用户(),javascript,command-line-interface,inquirer,inquirerjs,Javascript,Command Line Interface,Inquirer,Inquirerjs,考虑到上面的代码,我注意到在以前的视频中,如果包含验证,并且失败,输入将被清除。然而,在我的例子中,我得到的是一个不会自动清除的NaN。假设我启动应用程序并输入'abcdefg': ? Please the number of players NaN >> Please enter a valid whole number 如果我键入任何内容,它将被添加到NaN的末尾。Backspace和delete不会删除NaN,但是如果我多次按向上箭头按钮直到不再显示以前的输入,它将被删除。我

考虑到上面的代码,我注意到在以前的视频中,如果包含验证,并且失败,输入将被清除。然而,在我的例子中,我得到的是一个不会自动清除的NaN。假设我启动应用程序并输入'abcdefg':

? Please the number of players NaN
>> Please enter a valid whole number

如果我键入任何内容,它将被添加到NaN的末尾。Backspace和delete不会删除NaN,但是如果我多次按向上箭头按钮直到不再显示以前的输入,它将被删除。我做错什么了吗?

它无法清除输入,而且输入被某种方式阻止,这真是令人恼火。我解决这个问题的方法是使用一个验证函数,该函数也实现了过滤函数:

const validateNumbers = moreValidationChecks => ({
    validate: input => {
        if (input === '') {
            return 'Please provide a valid number greater then 0'
        }
        return moreValidationChecks ? moreValidationChecks(input) : true
    },
    filter: input => {
        // clear the invalid input
        return Number.isNaN(input) || Number(input) <= 0 ? '' : Number(input)
    },
})
您还可以对此进行其他验证:

   return inquirer.prompt([
        {
            name: 'amount',
            message: 'Type a number please',
            type: 'number',
            ...validateNumbers(input => {
                if (Number(input) < 10)) {
                    return "This must be less then 10"
                }
                return true
            }),
        },
    ])
返回查询器提示([
{
名称:'金额',
消息:“请键入一个号码”,
键入:“编号”,
…验证枚举数(输入=>{
如果(数字(输入)<10)){
return“此值必须小于10”
}
返回真值
}),
},
])

然而,我也被卡住了,每当你通过一个有效的数字,抛出一个验证错误,它仍然不能被删除。您需要键入一些文本,然后它将被删除,因为这将使其变为NaN

我发现将类型从数字更改为输入可以实现此目的。下面是我使用的一个提示符示例

{
    type: "input",
    message: "Please enter id:",
    name: "id",
    validate: (answer) => {
      if (isNaN(answer)) {
        return "please enter a number";
      }
      return true;
    },
  },
{
    type: "input",
    message: "Please enter id:",
    name: "id",
    validate: (answer) => {
      if (isNaN(answer)) {
        return "please enter a number";
      }
      return true;
    },
  },