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)
| 归档时间: |
|
| 查看次数: |
12686 次 |
| 最近记录: |