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', }, jwt: { secret: process.env.JWT_SECRET || 'Hxl1314521', accessExpiresIn: process.env.JWT_ACCESS_EXPIRES || '20m', refreshExpiresIn: process.env.JWT_REFRESH_EXPIRES || '14d', whitelist: [ '/user/login', '/user/register', '/user/refreshToken', '/', // '/module', '/docs*', '/docs/json' ], }, }; // 环境特定配置 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;