【发布时间】:2019-02-28 01:00:20
【问题描述】:
我有一个使用 graphql 构建的 node.js 应用程序。我需要检查“环境变量”以查看我所处的环境(开发、测试、生产)。基于那个环境,我需要设置一个 url。我想我对我需要什么有一个模糊的想法,但不知道如何完成它。
目前我的 config.js 文件如下所示:
const configuration = convict({
env: {
format: ['development', 'testing', 'production'],
default: 'development',
arg: 'nodeEnv',
env: 'NODE_ENV'
}
const env = configuration.get('env');
configuration.loadFile(`./config/${env}.json`);
configuration.validate({allowed: 'strict'});
module.exports = configuration.getProperties();
)};
然后在一个单独的文件中,我实际上需要根据环境设置 url,我需要根据我所处的环境类型(开发、测试或生产)来设置。该文件中的代码是:
If(env=='development'){
const url = 'abc.def.com/xxx/yyy/zzz/graphql';
}
Else If (env == 'testing'){
const url = 'xxx.yyyy.com/abc/def/ghi/graphql';
}
Else{
const url = '123.abc.com/cdc/def/hhh/graphql';
}
我尝试 console.log 环境值,但是当我尝试以下操作时: 控制台日志(环境);
我收到一个错误:引用错误:未定义环境。
有人可以指出我在访问 env 变量时缺少什么/做错了吗?
【问题讨论】:
-
可以使用process.env.NODE_ENV获取当前节点环境。
-
@RogerDodger 可以在代码中设置 process.env.NODE_ENV = 'production';或使用它开始您的流程 NODE_ENV=production node app.js
-
将配置导出为 module.exports = configuration 并在另一个文件中需要它,如 const config = require('./config.js') 并在该文件中执行 config.get( 'env')。
-
请确认您正在将配置导出为 module.exports = configuration;
-
或者如果你想导出为 module.exports = configuration.getProperties();,然后控制台记录整个导出,看看你得到了什么。 console.log(JSON.stringify(config));
标签: javascript node.js