首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指挥官无法处理多个命令参数

指挥官无法处理多个命令参数
EN

Stack Overflow用户
提问于 2014-11-21 16:40:48
回答 2查看 3.6K关注 0票数 6

我有以下带有多个参数的指挥官命令:

代码语言:javascript
复制
var program = require('commander');

program
  .command('rename <id> [name]')
  .action(function() {
    console.log(arguments);
  });

program.parse(process.argv);

使用该应用程序将产生以下结果:

代码语言:javascript
复制
$ node app.js 1 "Hello"
{ '0': '1',
  '1':
   { commands: [],
     options: [],
     _execs: [],
     _args: [ [Object] ],
     _name: 'rename',
     parent:
      { commands: [Object],
        options: [],
        _execs: [],
        _args: [],
        _name: 'app',
        Command: [Function: Command],
        Option: [Function: Option],
        _events: [Object],
        rawArgs: [Object],
        args: [Object] } } }

如您所见,该操作接收第一个参数(<id>)和program,但不接收第二个参数:[name]

我试过:

  • 使[name]成为必需的参数。
  • 将未引用的名称从命令行传递给工具。
  • 将我真正的应用程序简化为上面的小型可复制程序。
  • 使用name (rename <id> [name...])的变量参数,但是这会导致1Hello都被分配到同一个数组中作为第一个要操作的参数,这就违背了使用id的目的。

我遗漏了什么?指挥官是否只接受每个命令中的一个参数(在文档中看起来不是这样)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-11 23:09:15

我认为这是旧版本的commander中的一个bug。这一点现在适用于commander@2.9.0

票数 2
EN

Stack Overflow用户

发布于 2018-08-04 07:00:24

我遇到了同样的问题,决定改用羊驼

下面是他们在创建命令上的文档中的一个例子

在编写复杂程序时,您可能希望管理多个命令。使用.command()方法指定它们:

代码语言:javascript
复制
program
  // a first command
  .command("my-command", "Optional command description used in help")
  .argument(/* ... */)
  .action(/* ... */)
  // a second command
  .command("sec-command", "...")
  .option(/* ... */)
  .action(/* ... */)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27066200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档