指挥官不能处理多个命令参数

我有以下命令与多个参数:

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...] ),但是这会导致1Hello被分配到与第一个参数相同的数组中,从而破坏了拥有id的目的。

我错过了什么? 命令是否只接受每个命令一个参数(在文档中看起来不是这样)?

我认为这是一个旧版本的commander的错误。 这现在与commander@2.9.0