yargs收到“无效值:”消息

时间:2019-07-12 16:48:35

标签: javascript node.js yargs

我正在使用yargs开发cli工具。这是简单的yargs代码,用于处理cli选项

let argv = require('yargs')
    .usage('$0 <command> [option]')
    .command(
        'validate_zip',
        'validate the directory structure for the zip to be uploaded',
        {
            'validate_zip': {
                alias: 'vz'
            }
        }

    )
    .option('s', {
        alias: 'stage',
        describe: 'stage',
        type: 'string',
        choices: ['dev', 'qa', 'uat', 'prod'],
        count: true
    })
    .demandCommand(1, 'You need at least one command before moving on!')
    .help('h')
    .alias('h', 'help')
    .example('$0 validate_zip -s dev', 'testing yargs')
    .showHelpOnFail(false, "Specify --help || -h for available options")
    .argv;

这是cli命令 node testYargs.js vz -s dev。我尝试通过"dev",但遇到相同的问题。

并显示以下消息

Invalid values:
  Argument: s, Given: 1, Choices: "dev", "qa", "uat", "prod"

Specify --help || -h for available options

1 个答案:

答案 0 :(得分:0)

count选项不应设置为true。 Count具有特殊含义,表示应该对标志的出现次数进行计数:

details about count.可在原始yargs api文档中找到。

因此-v -v -v将设置v = 3,这将破坏选择逻辑。

credit to original answer.