我有一个用Node.js编写的 Web 服务器,我想使用特定文件夹启动。我不确定如何在 JavaScript 中访问参数。我正在像这样运行节点:
$ node server.js folder
这server.js
是我的服务器代码。Node.js 帮助说这是可能的:
$ node -h
Usage: node [options] script.js [arguments]
我将如何在 JavaScript 中访问这些参数?不知何故,我无法在网上找到这些信息。
我有一个用Node.js编写的 Web 服务器,我想使用特定文件夹启动。我不确定如何在 JavaScript 中访问参数。我正在像这样运行节点:
$ node server.js folder
这server.js
是我的服务器代码。Node.js 帮助说这是可能的:
$ node -h
Usage: node [options] script.js [arguments]
我将如何在 JavaScript 中访问这些参数?不知何故,我无法在网上找到这些信息。
参数存储在 process.argv
process.argv
是一个包含命令行参数的数组。第一个元素将是“节点”,第二个元素将是 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库。我们曾经使用node-optimist,但它已被弃用。
以下是直接从 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:最常用于参数解析的module。
Meow:Commander.js 的轻量级替代品
Yargs:更复杂的参数解析(重)。
Vorpal.js:具有参数解析的成熟/交互式命令行应用程序。