我正在尝试使用 flatiron 构建一个小框架。我想使用 nconf 加载我的所有配置文件,以便它们在我的应用程序的任何地方都可用。在我的根目录中,我有我的 app.js,我想从 config/bootstrap.js 中提取配置数据。
配置/配置/js
module.exports =
{ 'app' :
{ "host" : "localhost"
, "port" : process.env.port || 3000
}
}
bootstrap.js:
var nconf = require('nconf')
// database config
, dsource = require('./datasource')
// general or user config
, config = require('./config')
// allow overrides
nconf.overrides({
'always': 'be this value'
});
// add env vars and args
nconf.env().argv();
// load in configs from the config files
var defaults = {}
// so we can iterate over each config file
, confs = [dsource, config]
// for every config file
confs.forEach(function(conf)
{
// get each key
for (var key in conf)
{
// and add it to the defaults object
defaults[key] = conf[key]
}
})
// save the defaults object
nconf.defaults(defaults)
// logging this here works and properly shows the port setting
console.log('app port : ' + nconf.get('app:port'))
module.exports = nconf
所以当控制台从文件中登录时。一切似乎都很好。但是当我尝试导出它,并从 app.js 要求它作为 conf.get('app:port') 它不起作用。
app.js(只是'flatiron create app'中的香草app.js)
var flatiron = require('flatiron')
, app = flatiron.app
, path = require('path')
, conf = require('./config/bootstrap')
app.config.file({ file: path.join(__dirname, 'config', 'config.json') });
app.use(flatiron.plugins.http);
app.router.get('/', function () {
this.res.json({ 'hello': 'world' })
});
// this doesnt work, conf
app.start(conf.get('app:port'));
那么我怎样才能让它正常工作,以便在我的应用程序的任何地方都可以使用配置。理想情况下,我希望能够从任何地方获得配置,例如app.config
这是使用 nconf 的最佳方式吗?我似乎找不到很多例子。我看到的所有这些都只是从实际的 nconfig 示例文件中提取配置信息。不是来自文件外部的任何地方app.config
还是我没有正确使用它?有没有更好的方法来做到这一点。理想情况下,我想使用这个引导文件来加载我的所有配置,以及资源/视图(RVP 风格的应用程序),这样它就全部加载了。
这是我对布局的总体想法,对于一个想法
|-- conf/
| |-- bootstrap.js
| |-- config.js
|-- resources
| |-- creature.js
|-- views/
|-- presenters/
|-- app.js
|-- package.json