Node js commander args возвращает true вместо значения

Я хочу создать script с 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

Как я получаю значение этих аргументов?

9
22 февр. '15 в 22:30
источник поделиться
3 ответов

Документация не очень ясна и показывает это только на примере, но используемый вами синтаксис ('-s, --src') предназначен для булевых значения.

Если вы хотите взять строку, вам нужно сказать следующее: '-s, --src <item>'

13
22 февр. '15 в 23:10
источник

Вы не указываете, что параметры принимают ввод. Вы можете сделать это, включив в определения опций <data> или [data] (если это необходимо):

.option('-s, --src <src>', 'src csv file') .option('-d, --dest [dest]', 'destination csv file')

5
22 февр. '15 в 23:15
источник

Вам нужно указать, что параметры принимают аргумент и что это не просто флаг

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

Если аргумент является обязательным, он определяется с помощью <>. Если это необязательно, используйте [].

4
22 февр. '15 в 23:11
источник

Посмотрите другие вопросы по меткам или Задайте вопрос