在Linux或Mac上使用命令行参数运行Node.js脚本的正确语法是什么?
要运行没有参数的脚本,我只需使用命令node stuff.js
,但在这种情况下,我想运行一个名为stuff.js
的脚本,其参数为"blah", "hee", "woohoo!"
答案 0 :(得分:48)
请参阅http://nodejs.org/docs/latest/api/process.html#process_process_argv
总之,你会像
一样运行它 node stuff.js blah hee "whoohoo!"
然后您的论据可在process.argv
答案 1 :(得分:15)
如果你想做更复杂的事情,以下模块真的很有帮助:
为了好玩
答案 2 :(得分:3)
Nomnom是另一种可能的解决方案。
答案 3 :(得分:1)
这个简单的节点模块也很有用:command-line-args
它允许定义一个简单的定义:
const optionDefinitions = [
{ name: 'verbose', alias: 'v', type: Boolean },
{ name: 'src', type: String, multiple: true, defaultOption: true },
{ name: 'timeout', alias: 't', type: Number }
]
它验证您的选项,并允许您以简单的方式访问它们。
答案 4 :(得分:0)
参数存储在
中process.argv 并在命令行中传递参数,请检查以下示例:
例如在下面的示例中,我使用了指挥官NPM模块。 var args = require('commander')
使用 .option()方法定义带有Commander的选项。 下面的示例解析 process.argv 中的args和选项,将其余的args保留为program.args数组,这些未被选项占用。 这里 process.argv 是一个包含命令行参数的数组。第一个元素是'node',第二个元素是JavaScript文件的名称。接下来的元素将是任何其他命令行参数 执行后。
function list(val) {
return val.split(',');
}
args.version('0.11.2')
.option('-t, --tag [value]', 'tags to ignore', list, undefined)
.parse(process.argv);
在这里从命令行获取输入,我们必须使用-t执行.js文件,并且在存在多个参数的情况下,该参数之后以逗号(,)分隔 例如:节点example.js -t标记名 在这里,我使用list处理多个命令行参数,以便我们可以传递多个命令行参数 例如节点example.js -t tagname1,tagname2 因此,在此之后,作为命令行参数传递的所有输入将在名为args的数组中可用,因此可以出于您的目的使用此数组 和 您可以从这里了解更多信息:-
https://nodejs.org/docs/latest/api/process.html#process_process_argv
或者您可以使用以下模块: