在运行带节点的程序时检查是否给出了ARGV

时间:2016-05-13 16:48:41

标签: javascript node.js argv

运行带节点的程序时:

node test.js

如何在运行ARGV时检查程序是否获得node test.js --example?到目前为止我所尝试的是以下内容:

function say(input){
    console.log(input);
}

if(process.argv[1] !== '')
{
    say('false');
}
else {
    say('success');
}
if(process.argv[1] === null)
{
    say('false');
}
else {
    say('success');
}

然而,第一个解决方案不会输出else而第二个解决方案只会输出NUL is not defined所以,我正在考虑的是我在编码中犯了一些错误?< / p>

3 个答案:

答案 0 :(得分:6)

  • argv [0]是您的节点inerpretor的名称 - &gt;在一般节点
  • argv [1]是脚本的路径。所以argv [1]总是被填满

尝试这一点非常清楚:

session.createSQLQuery("select *, concat(country_code,contact_number) as phone_no from student").addScalar("phone_no", StringType.INSTANCE);

答案 1 :(得分:4)

感谢 kevin ternet 提供的答案,以及 maioman 提供的信息,我最终做的是:

if(process.argv[2] === undefined){
    say('false');
} else {
    say('true');
}

以下是您在Node中处理ARGV时会发生什么:

ARGV[0]

if(process.argv[0] === undefined){
    console.log('Failure');
    console.log(process.argv[0]);

} else {
    console.log('Success');
    console.log(process.argv[0]);
}

输出:

Success
C:\Program Files\nodejs\node.exe //Path to node executable

ARGV[1]

if(process.argv[1] === undefined){
    console.log('Failure');
    console.log(process.argv[1]);

} else {
    console.log('Success');
    console.log(process.argv[1]);
}

输出:

Success
C:\Users\bin\javascript\node\test.js //Path to file

ARGV[2]

if(process.argv[2] === undefined){
    console.log('Failure');
    console.log(process.argv[1]);

} else {
    console.log('Success');
    console.log(process.argv[2]);
}

输出:

Success
--example //The actual flag that was given

因此,要检查是否实际给出了一个标志,您需要查找ARGV[2]

以下是整个ARGV树的示例:

if(process.argv === undefined){
    console.log('Failure');
    console.log(process.argv);

} else {
    console.log('Success');
    console.log(process.argv);
}

Success
[ 'C:\\Program Files\\nodejs\\node.exe' //ARGV[0],
  'C:\\Users\\bin\\javascript\\node\\test.js' //ARGV[1],
  '--example' //ARGV[2] ]

因此,您可以看到树的结构为数组,第一个参数为0

答案 2 :(得分:-2)

另见minimist here

var argv = require('minimist')(process.argv.slice(2));
console.dir(argv);
console.log(argv.example);