#javascript #node.js #yargs
#javascript #node.js #yargs
Вопрос:
Используя yargs 16.2.0, я определил некоторые вложенные параметры и предоставил их через конфигурационный файл, но yargs по-прежнему утверждает, что они отсутствуют:
yargs
yargs
.command('do-stuff', 'Does some neat stuff.', o => o
.option('test.something', {
type: 'string',
demandOption: true,
requiresArg: true,
})
)
.strict()
.demandCommand()
.config('env')
.help()
.argv;
config.json
{
"test": {
"something": "blah"
}
}
Выполняется через …
> node index.js -- do-stuff --env config.json
index.js do-stu
Does some neat stuff.
Options:
--version Show version number [boolean]
--env Path to the environment config JSON from which to load
arguments.
--help Show help [boolean]
--test.something [string] [required]
Missing required argument: test.something
Затем я отредактировал node_modules/yargs-parser/build/index.cjs
(оригинал здесь) и добавил строку для выхода из argv
системы после анализа конфигурационного JSON:
setConfigObject(config); // line 630, existing
console.log(JSON.stringify(argv)); // added for debugging
Результирующий вывод:
{
"_": ["do-stuff"],
"env": "config.json",
"test":
{
"something": "blah"
}
}
Я внес то же самое изменение в node_modules/yargs/build/index.cjs
, после строки 1472 (непосредственно перед отображением сообщения «Отсутствуют требуемые аргументы», и вывод JSON по-прежнему включает test.something
аргумент.
Итак, почему yargs утверждает, что мои аргументы не были предоставлены, когда даже argv
показывает, что они были?
Комментарии:
1. Если еще немного разобраться в коде, то, скорее всего, это просто ошибка или неподдерживаемый вариант использования.
Ответ №1:
Это ошибка или неподдерживаемый вариант использования в yargs: https://github.com/yargs/yargs/issues/1782