我有一个写的Web服务器 Node.js的 我想用特定的文件夹启动。我不确定如何在JavaScript中访问参数。我正在运行这样的节点:
$ node server.js folder
这里 server.js
是我的服务器代码。 Node.js帮助说这是可能的:
$ node -h
Usage: node [options] script.js [arguments]
我如何在JavaScript中访问这些参数?不知何故,我无法在网上找到这些信息。
我有一个写的Web服务器 Node.js的 我想用特定的文件夹启动。我不确定如何在JavaScript中访问参数。我正在运行这样的节点:
$ node server.js folder
这里 server.js
是我的服务器代码。 Node.js帮助说这是可能的:
$ node -h
Usage: node [options] script.js [arguments]
我如何在JavaScript中访问这些参数?不知何故,我无法在网上找到这些信息。
参数存储在 process.argv
process.argv
是包含命令行参数的数组。第一个元素是'node',第二个元素是JavaScript文件的名称。下一个元素将是任何其他命令行参数。
// print process.argv
process.argv.forEach(function (val, index, array) {
console.log(index + ': ' + val);
});
这将产生:
$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four
参数存储在 process.argv
process.argv
是包含命令行参数的数组。第一个元素是'node',第二个元素是JavaScript文件的名称。下一个元素将是任何其他命令行参数。
// print process.argv
process.argv.forEach(function (val, index, array) {
console.log(index + ': ' + val);
});
这将产生:
$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four
要像普通的javascript函数那样规范化参数,我会在node.js shell脚本中执行此操作:
var args = process.argv.slice(2);
请注意,第一个arg通常是nodejs的路径,第二个arg是您正在执行的脚本的位置。
最新的 对 为此回答它使用 minimist 图书馆。我们曾经使用过 节点乐观 但它已经被弃用了。
以下是直接从最小化文档中使用它的示例:
var argv = require('minimist')(process.argv.slice(2));
console.dir(argv);
-
$ node example/parse.js -a beep -b boop
{ _: [], a: 'beep', b: 'boop' }
-
$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
{ _: [ 'foo', 'bar', 'baz' ],
x: 3,
y: 4,
n: 5,
a: true,
b: true,
c: true,
beep: 'boop' }
const args = process.argv;
console.log(args);
返回:
$ node server.js one two=three four
['node', '/home/server.js', 'one', 'two=three', 'four']
Minimist:用于最小化参数解析。
Commander.js:最常用的模块用于参数解析。
喵:Commander.js的替代品
Yargs:更复杂的参数解析(重)。
Vorpal.js:具有参数解析的成熟/交互式命令行应用程序。
这里有几个很好的答案,但这一切似乎都非常复杂。这与bash脚本访问参数值的方式非常相似,并且已经像mooGoo指出的那样已经为node.js提供了标准。 (只是为了让那些对node.js不熟悉的人理解)
例:
$ node yourscript.js banana monkey
var program_name = process.argv[0]; //value will be "node"
var script_path = process.argv[1]; //value will be "yourscript.js"
var first_value = process.argv[2]; //value will be "banana"
var second_value = process.argv[3]; //value will be "monkey"
适用于定义选项,操作和参数。它还会为您生成帮助页面。
如果您喜欢回调方法,那么非常适合从用户那里获取输入。
如果您喜欢生成器方法,那么非常适合从用户那里获取输入。