环境变量 Environment variables

Strapi 提供了可以在配置文件中使用的环境变量。

Strapi 提供了可以在配置文件中使用的环境变量。可以使用 env() 实用程序来 检索环境变量的值将变量转换为不同类型,并且可以创建特定的 不同环境的配置

Strapi 的环境变量

Strapi 提供了以下环境变量:

设置描述类型默认值
STRAPI_DISABLE_UPDATE_NOTIFICATION不要在终端中显示有关更新 strapi 的通知消息Booleanfalse
STRAPI_HIDE_STARTUP_MESSAGE不要在终端中显示启动消息Booleanfalse
STRAPI_TELEMETRY_DISABLED不将遥测使用数据发送到 StrapiBooleanfalse
STRAPI_LICENSE激活企业版的许可证密钥Stringundefined
STRAPI_DISABLE_REMOTE_DATA_TRANSFER禁用使用 传输功能 的能力Booleanfalse
NODE_ENV应用程序运行的环境类型。

production 启用特定行为(有关详细信息,请参阅 Node.js 文档
String'development'
BROWSER启动后在浏览器中打开管理面板Booleantrue
ENV_PATH包含环境变量的文件路径String'./.env'
STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE

可选
如果已安装 国际化 (i18n) 插件 并在 Content-Types 上启用,则应用程序的初始化语言环境 请参阅 生产环境中的 i18n 配置String'en'
STRAPI_ENFORCE_SOURCEMAPS强制捆绑器发出源映射,这有助于调试管理应用程序中的错误。booleanfalse
FAST_REFRESH使用 react-refresh 启用“快速刷新”以便在开发 Strapi 管理面板时获得近乎即时的反馈。booleantrue

在环境变量名称前加上 STRAPI_ADMIN_ 可以将变量暴露给管理前端(例如,可以通过 process.env.STRAPI_ADMIN_MY_PLUGIN_VARIABLE 访问 STRAPI_ADMIN_MY_PLUGIN_VARIABLE)。

使用环境变量进行配置

在大多数情况下,不同环境之间的配置会有所不同(例如数据库凭据)。

无需将这些凭据写入配置文件,只需在应用程序根目录的 .env 文件中定义变量即可:

sh
# path: .env

DATABASE_PASSWORD=acme

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

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

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

在配置文件中,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')

环境配置

可以使用以下命名和结构约定创建配置:./config/env/{environment}/{filename}。当您需要特定环境的特定静态配置并且使用环境变量不是最佳解决方案时,这很有用。

这些配置将合并到./config文件夹中定义的基本配置中。

环境基于NODE_ENV环境变量,默认为development

当使用NODE_ENV=production启动Strapi时,它将从./config/*./config/env/production/*加载配置。生产配置中定义的所有内容都将覆盖默认配置。与环境变量结合使用时,这种模式变得非常强大。

例如,使用以下配置文件将为您提供启动服务器的各种选项:

js
Javascript
js
// ./config/server.js
module.exports = {
  host: '127.0.0.1',
}
// ./config/env/production/server.js
module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
})

通过这些配置文件,服务器将根据传递的环境变量在各个端口上启动:

bash
yarn start     # 使用主机 127.0.0.1
NODE_ENV=production yarn start # 使用 .env 中定义的主机。如果未定义,则使用 0.0.0.0
HOST=10.0.0.1 NODE_ENV=production yarn start # 使用主机 10.0.0.1