feat: 完善环境标识配置
This commit was merged in pull request #1.
This commit is contained in:
+18
-4
@@ -5,9 +5,9 @@ import { z } from "zod";
|
||||
// 这样数据库密码、端口等配置错误会在服务启动阶段暴露,而不是等到请求进来才失败。
|
||||
const envSchema = z.object({
|
||||
NODE_ENV: z
|
||||
.enum(["local", "development", "test", "production"])
|
||||
.enum(["local", "development", "test", "develop", "production"])
|
||||
.default("development"),
|
||||
APP_ENV: z.enum(["local", "development", "test", "production"]).optional(),
|
||||
APP_ENV: z.enum(["local", "development", "test", "develop", "production"]).optional(),
|
||||
APP_ENV_LABEL: z.string().min(1).optional(),
|
||||
PORT: z.coerce.number().int().positive().default(3000),
|
||||
|
||||
@@ -31,9 +31,23 @@ if (!result.success) {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const rawAppEnv = result.data.APP_ENV ?? result.data.NODE_ENV;
|
||||
const resolvedAppEnv =
|
||||
rawAppEnv === "production"
|
||||
? "production"
|
||||
: rawAppEnv === "test" || rawAppEnv === "develop"
|
||||
? "develop"
|
||||
: "local";
|
||||
const defaultAppEnvLabel =
|
||||
{
|
||||
local: "本地环境",
|
||||
develop: "测试环境",
|
||||
production: "生产环境"
|
||||
}[resolvedAppEnv] ?? resolvedAppEnv;
|
||||
|
||||
// 其他模块只从 env 读取已校验过的值,不再直接访问 process.env。
|
||||
export const env = {
|
||||
...result.data,
|
||||
APP_ENV: result.data.APP_ENV ?? result.data.NODE_ENV,
|
||||
APP_ENV_LABEL: result.data.APP_ENV_LABEL ?? result.data.NODE_ENV
|
||||
APP_ENV: resolvedAppEnv,
|
||||
APP_ENV_LABEL: result.data.APP_ENV_LABEL ?? defaultAppEnvLabel
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user