如何访问并转换环境变量

页面摘要: 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')