根据process.argv,传递给nodejs脚本的参数为空

时间:2018-04-26 22:14:10

标签: node.js

我有一个nodejs脚本,我传递了一些参数。 问题是nodejs似乎没有选择这个参数。 Ť 我以前做了很多次,但从未遇到过问题。 以下是代码:

var StartConnect = require('./sourceConnect');

console.log("process.argv : " + JSON.stringify(process.argv))
var args = process.argv.splice(2);

console.log("args : " + JSON.stringify(args))

if(args.length < 1) {
    console.log("usage: node " + process.argv[1] + " <configuration> 
");

process.exit(0);
}
var startCon = new StartConnect(args);
startCon.masterProc();

当我将其作为:

运行时
bash-3.2$ node start.js config.json 
process.argv : ["/usr/local/Cellar/node/9.11.1/bin/node"]
args : []
usage: node undefined <configuration> 

为节点运行时节点,为什么arguments数组为空?这太奇怪了,令人沮丧!

1 个答案:

答案 0 :(得分:3)

您的问题是:Array.prototype.splice没有按照您的想法行事。当你调用它时,它期望它的参数为array.splice(index, count, ...newItems),并且它在高级别上执行此操作:

  1. count开始,从array移除最多index个项目,并将删除的项目存储在新阵列中。
  2. newItems开始,将array插入index
  3. 返回在步骤1中创建的新阵列。
  4. 您可以在MDN上找到更多详细信息here,其中详细介绍了这一点。

    相反,请尝试使用Array.prototype.slice。如果您在代码中将splice更改为slice,那么它就会完全按照您的要求执行操作。您可以找到有关该特定方法的更多详细信息here