我有一个简单的node.js后端脚本,我想捕获命令行参数以及config.json文件和环境变量中的键/值.第二个我没有问题,但我在捕获命令行args时几乎无法解决.
我可以这样捕获命令行参数:
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];
Run Code Online (Sandbox Code Playgroud)
这两个调用等同于process.argv [index],但索引已更改.
必须有一种更简单的方法来捕获命令行参数,但即使我调试并查看nconf产生的变量,我仍然无法弄明白.
有nconf经验的人可以帮忙吗?
Ale*_*lls 10
我相信这样做的最好方法是这样的:
//contents of app.js
var nconf = require('nconf').argv();
Run Code Online (Sandbox Code Playgroud)
如果使用follow命令行命令调用程序:
node app.js --one foo --two bar
Run Code Online (Sandbox Code Playgroud)
然后在您的程序中,您可以访问这些命令行args,如下所示:
var nconf = require('nconf').argv();
var one = nconf.get('one'); //one = 'foo'
var two = nconf.get('two'); //two = 'bar'
Run Code Online (Sandbox Code Playgroud)
所以你需要在标识符前面的 - 符号,然后你可以访问命令行args.
坦率地说,作为向nconf模块作者Charlie Robbins发送的消息,我认为最好不要将所有内容混合成一个大哈希.
如果你这样做会更好:
var foo = nconf.argv.get('one');
var node_env = nconf.env.get('NODE_ENV');
Run Code Online (Sandbox Code Playgroud)
我认为它更直观,更不容易出错.
此外,对于那些带'npm start'的起始节点:
据我所知,你需要两个额外的连字符,如下所示:
npm start -- --one foo --two bar
Run Code Online (Sandbox Code Playgroud)
使用额外的连字符/破折号,你让Bash知道args是你的node.js可执行文件,而不是NPM node.js可执行文件
略短/清洁:
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];
Run Code Online (Sandbox Code Playgroud)
如果您为参数命名(例如,--foo=bar或-f bar),那么您可以使用.get('foo')或.get('f')不使用数组索引.
| 归档时间: |
|
| 查看次数: |
3965 次 |
| 最近记录: |