yargs .check() 错误处理
yargs .check() error handling
我正在使用 yargs 验证数据加载帮助程序库的 cli 参数。
我希望能够在允许脚本 运行 之前检查文件是否存在,我使用 fs.accessSync(filename, fs.R_OK);
来完成。但是,如果文件不存在,消息只是将 .check() 函数显示为错误,而我想拦截,并声明文件不存在(具有读取权限)。
那么我如何发送错误以由 .check() 在错误时显示 return?
这是我的要点:
var path = {
name: 'filepath',
options: {
alias: 'f',
describe: 'provide json array file',
demand: true,
},
};
function fileExists(filename) {
try {
fs.accessSync(filename, fs.R_OK);
return true;
} catch (e) {
return false;
}
}
var argv = require('yargs')
.usage('[=10=] [args]')
.option(path.name, path.options)
.check(function (argv) {
return fileExists(argv.f);
})
.strict()
.help('help')
.argv;
如果不是可读文件,则 returned 错误:
Argument check failed: function (argv) {
return fileExists(argv.f);
}
我希望能够按照以下方式指定一些内容:
Argument check failed: filepath is not a readable file
因此在 yargs 5.0.0 中,当您 return 一个非真值时,它将打印整个输出。
Argument check failed: function (argv) {
return fileExists(argv.f);
}
如果你抛出你可以控制输出消息。
.check((argv) => {
if (fileExists(argv.f)) {
return true;
}
throw new Error('Argument check failed: filepath is not a readable file');
})
我正在使用 yargs 验证数据加载帮助程序库的 cli 参数。
我希望能够在允许脚本 运行 之前检查文件是否存在,我使用 fs.accessSync(filename, fs.R_OK);
来完成。但是,如果文件不存在,消息只是将 .check() 函数显示为错误,而我想拦截,并声明文件不存在(具有读取权限)。
那么我如何发送错误以由 .check() 在错误时显示 return?
这是我的要点:
var path = {
name: 'filepath',
options: {
alias: 'f',
describe: 'provide json array file',
demand: true,
},
};
function fileExists(filename) {
try {
fs.accessSync(filename, fs.R_OK);
return true;
} catch (e) {
return false;
}
}
var argv = require('yargs')
.usage('[=10=] [args]')
.option(path.name, path.options)
.check(function (argv) {
return fileExists(argv.f);
})
.strict()
.help('help')
.argv;
如果不是可读文件,则 returned 错误:
Argument check failed: function (argv) {
return fileExists(argv.f);
}
我希望能够按照以下方式指定一些内容:
Argument check failed: filepath is not a readable file
因此在 yargs 5.0.0 中,当您 return 一个非真值时,它将打印整个输出。
Argument check failed: function (argv) {
return fileExists(argv.f);
}
如果你抛出你可以控制输出消息。
.check((argv) => {
if (fileExists(argv.f)) {
return true;
}
throw new Error('Argument check failed: filepath is not a readable file');
})