如何访问并转换环境变量
页面摘要:
env()工具从.env文件访问环境变量,并将其转换为不同的类型,包括int、float、bool、json、array、date和oneOf。
在大多数使用场景中,不同环境之间会有不同的配置(例如数据库凭据)。
与其将这些凭据写入配置文件,不如在应用根目录的 .env 文件中定义变量:
# path: .env
DATABASE_PASSWORD=acme
要自定义要加载的 .env 文件路径,请在启动应用之前设置一个名为 ENV_PATH 的环境变量:
ENV_PATH=/absolute/path/to/.env npm run start
访问环境变量
在 .env 文件中定义的变量可以在配置文件和应用程序文件的任何位置使用 process.env.{variableName} 访问。
在配置文件中,一个 env() 工具允许定义默认值并转换值:
JavaScript
module.exports = ({ env }) => ({
connections: {
default: {
settings: {
password: env('DATABASE_PASSWORD'),
},
},
},
});
TypeScript
export default ({ env }) => ({
connections: {
default: {
settings: {
password: env('DATABASE_PASSWORD'),
},
},
},
});
NOTE
语法 property-name: env('VAR', 'default-value') 使用存储在 .env 文件中的值。如果 .env 文件中没有指定的值,则使用默认值。
转换环境变量
env() 工具可用于将环境变量转换为不同的类型:
// 返回已定义的 env,不进行转换
env('VAR', 'default');
// 转换为整数(使用 parseInt)
env.int('VAR', 0);
// 转换为浮点数(使用 parseFloat)
env.float('VAR', 3.14);
// 转换为布尔值(检查值是否等于 'true')
env.bool('VAR', true);
// 转换为 JS 对象(使用 JSON.parse)
env.json('VAR', { key: 'value' });
// 转换为数组(语法:ENV_VAR=[value1, value2, value3] | ENV_VAR=["value1", "value2", "value3"])
env.array('VAR', [1, 2, 3]);
// 转换为日期(使用 new Date(value))
env.date('VAR', new Date());
// 返回与 oneOf 联合类型匹配的 env
env.oneOf('UPLOAD_PROVIDER', ['local', 'aws'], 'local')