我有一个节点应用程序,它被部署到各种不同的网络上,所以env变量在所有这些网络中都会发生变化。目前,process.env
无处不在,并且正在增长,因此很难管理、跟踪、配置等。
组织和构建此类问题的最佳方法是什么?我正在考虑只编写一个带有函数和映射的类,该类返回我要求的内容并从各自的文件中调用它,这是一种好的、简单的方法吗?
我为此目的使用配置包。 它允许我将各种环境变量加载为配置参数。
例如,我可以做
const config = require( 'config' )
const myAppConfig = config.get( 'MyApp' )
const privateKey = myAppConfig.privateKey
const publicKey = myAppConfig.publicKey
这会在/config 目录中查找各种配置文件。您可以阅读有关它们的信息;它们具有适用于各种部署环境的精心设置。
该软件包还会在该目录中查找名为custom-environment-variables.json
的文件。它指定如何将环境变量映射到配置参数。
下面是加载环境变量MY_PRIVATE_KEY
和MY_PUBLIC_KEY
的文件的示例。
{
"MyApp" : {
"privateKey": "MY_PRIVATE_KEY",
"publicKey": "MY_PUBLIC_KEY"
}
}
这种配置方法非常健壮和灵活。
项目中可以有.env文件。 例如
PORT=5000
USER_TOKEN_SECRET='yourSecret'
MONGODB_URI='mongodb://localhost/test'
之后只需在您的配置文件中使用
require('dotenv').config();
import env from 'env-var';
export const mongoUrl = env.get('MONGODB_URI').asString();
export const apiUrl = env.get('API_URL').asString();