使用app.get('env')设置环境特定的configuration
我的问题涉及这个问题上的一个旧的答案,但有一个小的修改。
我会尽量保持简单。
假设我的文件夹结构如下
|-- controllers |-- File.js |-- and many more... |-- routes.js |-- app.js |-- config.js |-- env.json (same as one in the old answer)
相关文件包含
app.js
const routes = require('./routes'); app.set('env', process.env.NODE_ENV || 'production'); // set the environment app.use('/', routes);
routes.js
const FileController = require('./controllers/File'); let router = require('express').Router(); router.get('/files', FileController.getFiles); // ... module.exports = router;
控制器/ File.js
const config = require('../config'); exports.getFiles = (req, res, next) => { // I would like to use the environment-specific (that was set in app.js) config here console.log(config.facebook_app_id); }; // ...
config.js
const env = require('env.json'); /*exports.config = function() { var node_env = process.env.NODE_ENV || 'development'; return env[node_env]; };*/ module.exports = env[app.get('env')]; // this would cause an error as app is not defined
这可能是一个愚蠢的问题,但我怎么能在config.js
使用应用程序设置,即app.get('env')
?
你可以做的一个方法是parsingprocess.env.NODE_ENV || 'production'
process.env.NODE_ENV || 'production'
在你的configuration文件,然后引用它,当你实例化你的应用程序。 另一件要考虑的事情是使用process.env.NODE_ENV || 'development'
而不是process.env.NODE_ENV || 'development'
所以开发者必须明确地说他们在生产环境中。 你不想意外使用生产
const env = require('env.json') module.exports = env[process.env.NODE_ENV || 'production']