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

JavaScript

米亚Near

2020-03-09

我有一个用Node.js编写的Web服务器,我想使用一个特定的文件夹启动。我不确定如何在JavaScript中访问参数。我正在像这样运行节点:

$ node server.js folder

server.js是我的服务器代码。Node.js帮助说这是可能的:

$ node -h
Usage: node [options] script.js [arguments]

如何在JavaScript中访问这些参数?不知何故,我无法在网上找到此信息。

第190篇《如何将命令行参数传递给Node.js程序?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

9个回答
米亚小哥斯丁 2020.03.09

将命令行参数传递给Node.js程序的最佳方法是使用命令行界面(CLI)

您可以使用一个漂亮的npm模块,称为nodejs-cli

如果您想创建一个没有依赖性的程序,我想在Github上创建一个程序,如果您想查看它,它实际上非常简单易用,请单击此处

さ恋旧る 2020.03.09

如节点文档中所述,process.argv属性返回一个数组,其中包含启动Node.js进程时传递的命令行参数。

例如,假设以下脚本用于process-args.js:

// print process.argv
process.argv.forEach((val, index) => {
   console.log(`${index}: ${val}`);
});

以以下方式启动Node.js进程:

 $ node process-args.js one two=three four

将生成输出:

0: /usr/local/bin/node
1: /Users/mjr/work/node/process-args.js
2: one
3: two=three
4: four
null 2020.03.09

process.argv是您的朋友,Node JS本身支持捕获命令行args。请参见以下示例:

process.argv.forEach((val, index) => {
  console.log(`${index}: ${val}`);
})
神无老丝Davaid 2020.03.09

尽管上述答案很完美,并且有人已经建议过,但是使用该软件包确实非常容易。这是一个很好的程序包,它使传递参数到命令行变得非常容易。

npm i yargs
const yargs = require("yargs");
const argv = yargs.argv;
console.log(argv);

请访问https://yargs.js.org/了解更多信息。

神乐米亚 2020.03.09

使用nconf https://github.com/flatiron/nconf之类的集中方式管理配置可能是一个好主意

它可以帮助您使用配置文件,环境变量,命令行参数。

神无宝儿达蒙 2020.03.09

Commander.js

对于定义选项,操作和参数非常有用。它还会为您生成帮助页面。

及时

如果您喜欢回调方法,则非常适合从用户那里获取输入。

共同提示

如果您喜欢生成器方法,则非常适合从用户那里获取输入。

猴子Davaid 2020.03.09

这里有几个很好的答案,但这似乎非常复杂。这与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"
Stafan前端 2020.03.09

乐观主义者(节点最优主义者)

签出乐观主义者的图书馆,它比手动分析命令行选项好得多。

更新资料

不赞成使用乐观主义者。尝试yargs,它是乐观主义者的积极分支。

小宇宙Near 2020.03.09

为了使参数像常规的javascript函数一样标准化,我在node.js shell脚本中执行以下操作:

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

请注意,第一个arg通常是nodejs的路径,第二个arg是您正在执行的脚本的位置。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android