检查在使用节点运行程序时是否给出ARGV

Checking if ARGV is given when running a program with node

本文关键字:是否 ARGV 程序 运行 节点 检查      更新时间:2023-09-26

使用节点运行程序时:

node test.js

当运行node test.js --example时,如何检查程序是否被赋予了ARGV?到目前为止,我已经尝试了以下内容:

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,因此,我认为我在编码中犯了一些错误?

  • argv[0]是您的节点的名称,在一般节点中是预处理程序-->
  • argv[1]是脚本的路径。所以argv[1]总是被填充的

试着做到心中有数:

console.log(process.argv);

感谢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