更新到最新版本后,yargs argv 不再工作
yargs argv not working anymore after update to latest version
我有这个代码
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
};
得到argv.applyChanges
布尔值。但是在对 yargs 17 进行最新更新后,我在 argv.applyChanges
上收到一条错误消息
property 'applyChanges' does not exist on type '{ [x: string]: unknown; applyChanges: boolean | undefined; _: (string | number)[]; [=14=]: string; } | Promise<{ [x: string]: unknown; applyChanges: boolean | undefined; _: (string | number)[]; [=14=]: string; }>'.
Property 'applyChanges' does not exist on type 'Promise<{ [x: string]: unknown; applyChanges: boolean | undefined; _: (string | number)[]; [=14=]: string; }>'.
我尝试使用 await
但没有成功。
我应该怎么办?
此代码适用于以前的 yargs 版本 16.x.x
argv 的类型是联合。第一项是参数,第二项是解决这些参数的承诺。
它是一个联合的原因是因为在 yargs 中你可以有命令,并且这些命令的处理程序可以是异步的。因此 .argv 将在该命令完成后解析。
在示例中,您没有使用任何异步命令,但是当您只是调用 .argv 或 .parse 时,yargs typing 并不知道这一点。
你需要做的是使用 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
};
我有这个代码
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
};
得到argv.applyChanges
布尔值。但是在对 yargs 17 进行最新更新后,我在 argv.applyChanges
上收到一条错误消息
property 'applyChanges' does not exist on type '{ [x: string]: unknown; applyChanges: boolean | undefined; _: (string | number)[]; [=14=]: string; } | Promise<{ [x: string]: unknown; applyChanges: boolean | undefined; _: (string | number)[]; [=14=]: string; }>'. Property 'applyChanges' does not exist on type 'Promise<{ [x: string]: unknown; applyChanges: boolean | undefined; _: (string | number)[]; [=14=]: string; }>'.
我尝试使用 await
但没有成功。
我应该怎么办?
此代码适用于以前的 yargs 版本 16.x.x
argv 的类型是联合。第一项是参数,第二项是解决这些参数的承诺。
它是一个联合的原因是因为在 yargs 中你可以有命令,并且这些命令的处理程序可以是异步的。因此 .argv 将在该命令完成后解析。
在示例中,您没有使用任何异步命令,但是当您只是调用 .argv 或 .parse 时,yargs typing 并不知道这一点。
你需要做的是使用 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
};