如何向Node.js程序传递命令行参数?

我有一个用Node.js编写的网络服务器,我想用一个特定的文件夹来启动。我不确定如何在JavaScript中访问参数。我是这样运行node的。

$ 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
评论(8)

为了使参数像普通的javascript函数一样正常化,我在我的node.js shell脚本中这样做。

var args = process.argv.slice(2);

注意,第一个参数通常是nodejs的路径,第二个参数是你正在执行的脚本的位置。

评论(12)

乐观主义者(结点-乐观主义者

看看optimist库,它比手工解析命令行选项好得多。

更新

Optimist已经被废弃了。试试yargs,它是optimist的一个活跃分叉。

评论(4)