我有这个代码
const argv = yargs
.option("applyChanges", {
alias: "a",
description: "Apply the changes",
type: "boolean"
})
.help()
.alias("help", "h").argv;
const options = {
applyChanges: argv.applyChanges ? argv.applyChanges : false
};
Run Code Online (Sandbox Code Playgroud)
获取argv.applyChanges布尔值。但在最新更新 yargs 17 之后,我收到一条错误消息argv.applyChanges:
属性“applyChanges”在类型“{[x:字符串]:未知;applyChanges: 布尔值 | 不明确的; _: (字符串 | 数字)[]; $0:字符串;} | Promise<{ [x: string]: 未知; applyChanges: 布尔值 | 不明确的; _: (字符串 | 数字)[]; $0:字符串;}>'。类型“Promise<{[x: string]:unknown;”上不存在属性“applyChanges” applyChanges: 布尔值 | 不明确的; _: (字符串 | 数字)[]; $0:字符串;}>'。
我尝试使用await但没有成功。我应该怎么办?此代码适用于之前的 yargs 版本 16.xx
argv 的类型是联合。第一项是参数,第二项是解决这些参数的承诺。
它是联合的原因是因为在 yargs 中您可以拥有命令,并且这些命令的处理程序可以是异步的。因此 .argv 将在该命令完成后解析。
在示例中,您没有使用任何异步命令,但 yargs 键入不知道您何时只是调用 .argv 或 .parse。
您需要做的是使用parseSync,它明确告诉 yargs 您没有异步命令(如果有异步命令,这也会引发错误)。
const argv = yargs
.option("applyChanges", {
alias: "a",
description: "Apply the changes",
type: "boolean"
})
.help()
.alias("help", "h").parseSync();
const options = {
applyChanges: argv.applyChanges ? argv.applyChanges : false
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1987 次 |
| 最近记录: |