首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用NCONF捕获命令行参数

使用NCONF捕获命令行参数
EN

Stack Overflow用户
提问于 2015-05-01 05:51:00
回答 3查看 4.9K关注 0票数 17

我有一个简单的node.js后端脚本,我想要捕获命令行参数以及来自config.json文件和环境变量的键/值。第二个我没有问题,但我在捕获命令行参数时遇到了几乎令人费解的问题。

我可以这样捕获命令行参数:

代码语言:javascript
复制
var nconf = require('nconf');
nconf.argv().env().file({file: './config.json'});

var csvFilePath = nconf.argv().get()._[0]; // var csvFilePath = process.argv[2];
var csvType = nconf.argv().get()._[1];     // var csvType = process.argv[3];

这两个调用等同于process.argvindex,只是索引发生了变化。

必须有一种更直接的方法来捕获命令行参数,但即使当我调试并查看nconf产生的变量时,我仍然无法弄清楚。

有nconf经验的人愿意帮忙吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-07 05:08:30

我认为最好的方法是这样做:

代码语言:javascript
复制
//contents of app.js
var nconf = require('nconf').argv();

如果使用以下命令行命令调用程序:

代码语言:javascript
复制
node app.js --one foo --two bar

然后,在您的程序中,您可以像这样访问这些命令行参数:

代码语言:javascript
复制
var nconf = require('nconf').argv();
var one = nconf.get('one');  //one = 'foo'
var two = nconf.get('two');  //two = 'bar'

因此,您需要在标识符前面使用--符号,然后才能访问命令行参数。

坦率地说,作为对nconf模块作者Charlie Robbins的一条消息,我认为最好不要将所有内容都混合到一个大散列中。

如果你这样做会更好:

代码语言:javascript
复制
var foo = nconf.argv.get('one');
var node_env = nconf.env.get('NODE_ENV');

我认为它更直观,更不容易出错。

另外,对于那些以'npm start‘开头的节点:

据我所知,您需要两个额外的连字符,如下所示:

代码语言:javascript
复制
npm start -- --one foo --two bar

通过使用额外的连字符/破折号,您可以让Bash知道参数是用于node.js可执行文件的,而不是用于NPM node.js可执行文件的

票数 10
EN

Stack Overflow用户

发布于 2015-05-07 09:42:24

略短/更整洁:

代码语言:javascript
复制
var nconf = require('nconf');
nconf.argv().env().file({file: './config.json'});

var csvFilePath = nconf.get('_')[0]; // var csvFilePath = process.argv[2];
var csvType = nconf.get('_')[1];     // var csvType = process.argv[3];

如果您命名参数(例如,--foo=bar-f bar),那么您可以使用.get('foo').get('f'),而不是使用数组索引。

票数 7
EN

Stack Overflow用户

发布于 2018-11-18 15:07:17

尝尝这个

代码语言:javascript
复制
npm start -- --one foo --two bar

它在windows中为我工作

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29978451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档