指挥官不能处理多个命令参数
我有以下命令与多个参数:
var program = require('commander'); program .command('rename <id> [name]') .action(function() { console.log(arguments); }); program.parse(process.argv);
使用该应用程序产生以下结果:
$ 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...]
),但是这会导致1
和Hello
被分配到与第一个参数相同的数组中,从而破坏了拥有id
的目的。
我错过了什么? 命令是否只接受每个命令一个参数(在文档中看起来不是这样)?
我认为这是一个旧版本的commander
的错误。 这现在与commander@2.9.0
。