使用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'] 
Interesting Posts