获取数组作为原始命令行参数

Chr*_*ris 7 javascript arrays arguments node.js

我正在尝试在 Node.js 中实现原始命令行参数。

当我实现简单变量时,一切正常

(node example.js variable)
Run Code Online (Sandbox Code Playgroud)

但是当我将数组作为参数实现时它不起作用

(node example.js "['127.0.0.5', '127.0.0.3']" )
Run Code Online (Sandbox Code Playgroud)

完整代码:

if (process.argv.length <= 3) {
    console.log("Usage: " + __filename + " SOME_PARAM");
    process.exit(-1);
}

var variable = process.argv[2];
var array = process.argv[3];

console.log('Host: ' + variable);
console.log('array: ' + array);
Run Code Online (Sandbox Code Playgroud)

问题

参数输入示例 ( node example.js variable "['127.0.0.5', '127.0.0.3']")

如何将第二个参数 ( "['127.0.0.5', '127.0.0.3']") 作为数组而不是字符串(就像现在一样)传递,以便稍后我可以访问数组的第 n 个元素(示例array[0] = '127.0.0.5'

解决方案

输入应该类似于('["127.0.0.5", "127.0.0.3"]'更改引号),并且我们还需要将参数解析为 JSON。

if (process.argv.length <= 3) {
    console.log("Usage: " + __filename + " SOME_PARAM");
    process.exit(-1);
}

var variable = process.argv[2];
var array = JSON.parse(process.argv[4]);

console.log('Host: ' + variable);
console.log('array: ' + array);
console.log(array[1]
Run Code Online (Sandbox Code Playgroud)

laz*_*vab 11

这是一个老问题,但如果有人仍在寻找简单的解决方案,那就是。

使用相同的名称多次传递命名参数。

node example.js --variable=127.0.0.5 --variable=127.0.0.3
Run Code Online (Sandbox Code Playgroud)

使用minimist NPM 包将 args 提取为:

node example.js --variable=127.0.0.5 --variable=127.0.0.3
Run Code Online (Sandbox Code Playgroud)

输出:

[ '127.0.0.5', '127.0.0.3' ]
Run Code Online (Sandbox Code Playgroud)


And*_*ius 3

您将无法传递数组。您必须做的(并且可能正在做的)是传递诸如转换为 JSON 字符串的数组之类的内容。

在应用程序中,您只需执行 aJSON.parse()即可将数组从字符串中取出。