Pab*_*ado 5 json command-line-arguments node.js
我正在学习如何使用 node.js,但在解析命令行参数时遇到问题。以下行:
node test.js --input=in.txt
Run Code Online (Sandbox Code Playgroud)
当代码到达这个命令时给出解析错误:
var fileName = JSONparse.(process.argv[2]);
Run Code Online (Sandbox Code Playgroud)
结果报错:
undefined
--input=in.txt
Syntax error: Unexpected number
Run Code Online (Sandbox Code Playgroud)
我想要做的是为输入文件创建一个可选变量。如果未在命令行中指定,则应解析为“a.txt”。
我还没有找到一种创建默认参数的简单方法,或者使用诸如 '--input=' 之类的标识符来不必担心传递参数的顺序(我知道在这种情况下使用一个参数并不重要) .
最佳选择:使用现有的命令行解析器。yargs模块工作得很好。
如果你想自己动手,这是我会采取的方法。首先,使用所有默认值创建一个对象:
var opts = {
inputStream: process.stdin,
verbose: false
};
Run Code Online (Sandbox Code Playgroud)
...然后只需循环遍历参数,随时替换选项。如果选项不存在,则将使用默认值:
for (var i = 2; i < process.argv.length; i++) {
var arg = process.argv[i];
var keyValue = arg.split('=');
var key = keyValue[0], value = keyValue[1];
if (key === '--input' || key === '-i') {
opts.inputStream = fs.createReadStream(value);
}
if (key === '---verbose' || key === '-v') {
opts.verbose = true;
}
// etc.
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4315 次 |
最近记录: |