Strapi 提供了可以在配置文件中使用的环境变量。可以使用 env()
实用程序来 检索环境变量的值 和 将变量转换为不同类型,并且可以创建特定的 不同环境的配置。
Strapi 的环境变量
Strapi 提供了以下环境变量:
设置 | 描述 | 类型 | 默认值 |
---|---|---|---|
STRAPI_DISABLE_UPDATE_NOTIFICATION | 不要在终端中显示有关更新 strapi 的通知消息 | Boolean | false |
STRAPI_HIDE_STARTUP_MESSAGE | 不要在终端中显示启动消息 | Boolean | false |
STRAPI_TELEMETRY_DISABLED | 不将遥测使用数据发送到 Strapi | Boolean | false |
STRAPI_LICENSE | 激活企业版的许可证密钥 | String | undefined |
STRAPI_DISABLE_REMOTE_DATA_TRANSFER | 禁用使用 传输功能 的能力 | Boolean | false |
NODE_ENV | 应用程序运行的环境类型。production 启用特定行为(有关详细信息,请参阅 Node.js 文档) | String | 'development' |
BROWSER | 启动后在浏览器中打开管理面板 | Boolean | true |
ENV_PATH | 包含环境变量的文件路径 | String | './.env' |
STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE 可选 | 如果已安装 国际化 (i18n) 插件 并在 Content-Types 上启用,则应用程序的初始化语言环境 请参阅 生产环境中的 i18n 配置 | String | 'en' |
STRAPI_ENFORCE_SOURCEMAPS | 强制捆绑器发出源映射,这有助于调试管理应用程序中的错误。 | boolean | false |
FAST_REFRESH | 使用 react-refresh 启用“快速刷新”以便在开发 Strapi 管理面板时获得近乎即时的反馈。 | boolean | true |
在环境变量名称前加上 STRAPI_ADMIN_
可以将变量暴露给管理前端(例如,可以通过 process.env.STRAPI_ADMIN_MY_PLUGIN_VARIABLE
访问 STRAPI_ADMIN_MY_PLUGIN_VARIABLE
)。
使用环境变量进行配置
在大多数情况下,不同环境之间的配置会有所不同(例如数据库凭据)。
无需将这些凭据写入配置文件,只需在应用程序根目录的 .env
文件中定义变量即可:
# path: .env
DATABASE_PASSWORD=acme
要自定义要加载的 .env
文件的路径,请在启动应用程序之前设置一个名为 ENV_PATH
的环境变量:
ENV_PATH=/absolute/path/to/.env npm run start
.env
文件中定义的变量可以在配置和应用程序文件中的任何位置使用 process.env.{variableName}
访问。
在配置文件中,env()
实用程序允许定义默认值和 强制转换值:
module.exports = ({ env }) => ({
connections: {
default: {
settings: {
password: env('DATABASE_PASSWORD'),
},
},
},
})
语法 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')
环境配置
可以使用以下命名和结构约定创建配置:./config/env/{environment}/{filename}
。当您需要特定环境的特定静态配置并且使用环境变量不是最佳解决方案时,这很有用。
这些配置将合并到./config
文件夹中定义的基本配置中。
环境基于NODE_ENV
环境变量,默认为development
。
当使用NODE_ENV=production
启动Strapi时,它将从./config/*
和./config/env/production/*
加载配置。生产配置中定义的所有内容都将覆盖默认配置。与环境变量结合使用时,这种模式变得非常强大。
例如,使用以下配置文件将为您提供启动服务器的各种选项:
// ./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'),
})
通过这些配置文件,服务器将根据传递的环境变量在各个端口上启动:
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