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

在节点上运行程序时:

node test.js 

如何在运行node test.js --example时检查程序是否被赋予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'); } 

然而,第一个解决scheme不会输出else ,第二个解决scheme只输出NUL is not defined这样NUL is not defined所以我在想我在编码时犯了一些错误?

  • argv [0]是您的节点inerpretor – >在一般节点中的名称
  • argv [1]是脚本的path。 所以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

这里也参见minimist。

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