Files
smart_grid_iot/server/src/config/config.default.ts
T

121 lines
3.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { MidwayConfig } from "@midwayjs/core";
import { existsSync } from "fs";
import { join } from "path";
import { tmpdir } from "os";
import { config as loadEnv } from "dotenv";
// 加载项目根目录的环境变量文件:
// 1) .env 基础配置(默认=生产,不覆盖系统环境变量)
// 2) .env.{环境} 环境专属覆盖,如 .env.local(MIDWAY_SERVER_ENV=local 时生效)
const envDir = join(__dirname, "../../");
loadEnv({ path: join(envDir, ".env") });
const currentEnv = process.env.MIDWAY_SERVER_ENV || process.env.NODE_ENV || "prod";
const envFile = join(envDir, `.env.${currentEnv}`);
if (existsSync(envFile)) {
loadEnv({ path: envFile, override: true });
}
export default {
keys: "smart-grid-iot-secret-key",
koa: {
port: 7001
},
// 日志输出目录(显式指定到项目内 server/logs,避免写入用户主目录导致 EPERM 权限报错)
logger: {
dir: join(envDir, "logs"),
appLogName: "midway-app.log",
coreLogName: "midway-core.log",
errorLogName: "common-error.log",
enableError: true,
maxFiles: "30d"
},
sequelize: {
dataSource: {
default: {
dialect: "postgres",
host: process.env.PG_HOST || "localhost",
port: Number(process.env.PG_PORT) || 5432,
database: process.env.PG_DATABASE || "xintong",
username: process.env.PG_USERNAME || "postgres",
password: process.env.PG_PASSWORD || "postgres",
timezone: "+08:00",
models: [join(__dirname, "../entity")],
define: {
timestamps: true,
underscored: true,
createdAt: "created_at",
updatedAt: "updated_at"
},
pool: {
max: 10,
min: 0,
acquire: 30000,
idle: 10000
}
}
},
sync: false
},
redis: {
client: {
host: process.env.REDIS_HOST || "localhost",
port: Number(process.env.REDIS_PORT) || 6379,
password: process.env.REDIS_PASSWORD || "",
db: 0
}
},
jwt: {
secret: "smart-grid-iot-admin-jwt-secret-key-2024",
expiresIn: "2h",
refreshExpiresIn: "7d"
},
// multipart/form-data 解析配置(现场照片上传)
upload: {
mode: "file",
fileSize: "10mb",
whitelist: [".png", ".jpg", ".jpeg", ".webp", ".gif", ".bmp"],
tmpdir: join(tmpdir(), "smart-grid-upload"),
cleanTimeout: 5 * 60 * 1000
},
// RustFS 对象存储(S3 兼容协议、path-style 访问)
rustfs: {
endpoint: process.env.RUSTFS_ENDPOINT || "127.0.0.1",
port: Number(process.env.RUSTFS_PORT) || 9000,
useSSL: process.env.RUSTFS_USE_SSL === "true",
accessKey: process.env.RUSTFS_ACCESS_KEY || "",
secretKey: process.env.RUSTFS_SECRET_KEY || "",
region: process.env.RUSTFS_REGION || "us-east-1",
// 当前生效的桶(生产/测试通过 .env 与 .env.local 切换)
bucket: process.env.RUSTFS_BUCKET || process.env.RUSTFS_BUCKET_PROD || "",
bucketProd: process.env.RUSTFS_BUCKET_PROD || "",
bucketTest: process.env.RUSTFS_BUCKET_TEST || "",
// RustFS 仅支持 path-style 访问
forcePathStyle: true,
// 预签名 URL 有效期(秒)
presignExpires: 3600,
// 上传对象 key 前缀
keyPrefix: "customer-visit"
},
cors: {
origin: "*",
allowMethods: "GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS",
exposeHeaders: "Content-Type,Authorization,X-Requested-With",
credentials: true
},
security: {
csrf: {
enable: false
}
}
} as MidwayConfig;