Node.js commander参数返回true而不是值

27

我想使用Node和Node Commander创建一个脚本,当我尝试获取我的参数值时,我得到的是true而不是实际的值。

例如,如果我在终端中输入以下内容:

node myfile.js -s somefile -d test

var program = require('commander');

program
  .version('0.0.1')
  .option('-s, --src', 'src csv file')
  .option('-d, --destination', 'destination csv file')
  .parse(process.argv);

console.log(program.src); // return true
console.log(program.destination); // return true

我该如何获取这个参数的值?


请问您能否包含以下代码的输出结果:console.log(JSON.stringify(program)); 谢谢。 - L0j1k
3个回答

36

文档不是很清晰,只有示例,但你使用的语法 ('-s, --src') 是用于布尔值的。

如果你想传递一个字符串,需要这样写:'-s, --src <item>'


11
您没有指定选项接受输入。您可以通过在选项定义中包含<data>[data](如果是可选的)来实现这一点: .option('-s, --src <src>', 'src csv文件') .option('-d, --dest [dest]', '目标csv文件')

8
您需要指定选项需要一个参数,而不仅仅是一个标志。
program
  .version('0.0.1')
  .option('-s, --src <file>', 'src csv file')
  .option('-d, --destination <file>', 'destination csv file')
  .parse(process.argv);

如果参数是必须的,它将被指定为<>。如果是可选的,则使用[]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接