使用app.get('env')设置特定于环境的配置

米奇

我的问题与该问题的旧答案有关,但做了少许修改。

我会尽量保持简单。

假设我的文件夹结构如下

|-- 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

这可能是一个愚蠢的问题,但是我该如何使用应用程序设置,例如app.get('env')在内部config.js

马尔马特南德斯

一种方法是解析process.env.NODE_ENV || 'production'配置文件中的,然后在实例化应用程序时引用它。要考虑的另一件事是process.env.NODE_ENV || 'development'改为使用,以便开发人员必须明确声明他们处于生产环境中。您不想意外使用生产

const env = require('env.json')
module.exports = env[process.env.NODE_ENV || 'production']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel .env文件中的特定于环境的SSL配置

使用取决于环境变量process.env.APP_ENV的Mocha测试配置模块

使用vue-cli配置特定于环境的变量

使用Sidekiq和纯Ruby指定特定于环境的配置

在特定于Docker容器环境中配置Angular 2 Webpack App

使用应用程序设置来驱动特定于环境的设置,例如UseUrls

使用O / S Env Var进行OpenShift部署环境配置

如何使用特定于环境的配置创建Spring Cloud Config Client?

使用env设置包含空间的环境变量

如何使用 .env 文件来设置/配置 Webpack 配置

如何使用config.json为Visual Studio 2015 / DNX项目设置特定于环境的变量?

设置特定于CTest(cmake)环境变量的配置

特定于环境的StructureMap配置?

Google App Engine Java中的特定于环境的变量

使用Firebase远程配置而不是.env文件

如何使用内部 ip 配置标准 env app-engine 和 cloudsql 实例之间的通信

Laravel 5.2 {{env('APP_ENV')}}在生产环境中不起作用

使用 CSS env() 变量进行样式设置?

在.env中使用空格设置变量

使用ENV参数设置容器PATH

使用ENV设置缩放Docker容器

使用特定的.env文件运行npm build

如何使用 java-ee8、microProfile 4.0、Openliberty 21 和 Docker 设置特定于阶段的 microprofile 配置

如何在Micronaut中使用特定于环境的变量?

无法使用docker run -e或--env-file选项设置环境变量

在Webpack中使用Babel Loader时如何设置Babel环境变量(BABEL_ENV)?

使用env命令设置OS X环境变量,包括键/值文件中的空格

docker build 没有使用 ENV 设置环境变量

如何在python中使用dotenv在本地.env文件中设置环境变量?