yuheng/config/index.js
expressgy fdc4d67092 feat: 添加Redis支持、雪花ID生成器及集群模式
- 新增Redis插件,支持分布式锁及缓存功能
- 引入雪花ID生成器,用于生成唯一用户ID
- 实现集群模式,支持多线程运行
- 优化用户注册逻辑,增加分布式锁机制
- 更新配置文件,添加Redis及雪花ID相关配置
- 修复部分代码格式及数据库字段类型
2025-03-26 00:42:33 +08:00

94 lines
2.6 KiB
JavaScript

import { profile } from 'console';
import { config } from 'dotenv';
import path from 'path';
// 加载环境变量
config({ path: path.resolve(process.cwd(), '.env') });
// console.log('[NODE_ENV]:', process.env.NODE_ENV);
// 基础配置
const baseConfig = {
NODE_ENV: process.env.NODE_ENV || 'development',
env: process.env.NODE_ENV || 'development',
serviceName: 'YuHeng',
description: 'User System',
version: '1.0.0',
deviceInfo: {
dataCenterId: process.env.DATACENTER_ID,
machineId: process.env.MACHINE_ID,
pid: process.pid,
},
server: {
port: process.env.PORT || 9000,
host: process.env.HOST || 'localhost',
backlog: process.env.BACKLOG || 511,
},
profile: {
swagger: {
basePath: '/swagger',
},
},
logger: {
level: process.env.LOG_LEVEL || 'trace',
filePath: process.env.LOG_FILE || '../logs/app.log',
console: false,
},
pluginOptions: {
name: process.env.PLUGIN_NAME || 'default',
prefix: process.env.API_PREFIX || '/api',
},
db: {
host: process.env.DB_HOST || '127.0.0.1',
port: process.env.DB_PORT || 3306,
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME || 'yuheng',
ssl:
process.env.NODE_ENV === 'production'
? {
rejectUnauthorized: false,
servername: '', // 明确置空servername参数
}
: null,
},
redis: {
host: process.env.REDIS_HOST || '127.0.0.1',
port: process.env.REDIS_PORT || 6379,
connectName: 'yuheng',
database: process.env.REDIS_DB || 9,
username: 'default',
password: process.env.REDIS_PASSWORD || 'Hxl1314521',
}
};
// 环境特定配置
const envConfig = {
production: {
server: {
host: '0.0.0.0',
},
logger: {
level: 'warn',
},
},
development: {
logger: {
level: 'trace',
console: true,
},
},
};
// 使用深度合并代替展开操作符
function deepMerge(target, source) {
for (const key of Object.keys(source)) {
if (source[key] instanceof Object && key in target) {
Object.assign(source[key], deepMerge(target[key], source[key]));
}
}
return Object.assign({}, target, source);
}
const configInfo = deepMerge(baseConfig, envConfig[process.env.NODE_ENV] || envConfig.development);
export default configInfo;