检查是否在节点运行程序时给出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);