访问和转换环境变量 Access and cast environment variables

在大多数用例中,不同环境之间的配置会有所不同(例如数据库凭据)。无需将这些凭据写入配置文件,而是可以在应用程序根目录下的 `.env` 文件中定义变量:

.env
sh
DATABASE_PASSWORD=acme

要自定义要加载的 .env 文件的路径,请在启动应用程序之前设置一个名为 ENV_PATH 的环境变量:

sh
ENV_PATH=/absolute/path/to/.env npm run start

访问环境变量

在配置和应用程序文件中的任何位置,都可以使用 process.env.{variableName} 访问 .env 文件中定义的变量。

在配置文件中,env() 实用程序允许定义默认值和 转换值

js
./config/database.js
js
module.exports = ({ env }) => ({
  connections: {
    default: {
      settings: {
        password: env('DATABASE_PASSWORD'),
      },
    },
  },
})

语法 property-name: env('VAR', 'default-value') 使用存储在 .env 文件中的值。如果 .env 文件中没有指定值,则使用默认值。

转换环境变量

env() 实用程序可用于将环境变量转换为不同类型:

js
// 如果已定义,则返回 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')