- 新增JWT认证插件,支持用户登录、刷新Token功能 - 添加系统模块管理功能,包括模块的创建、更新和查询 - 更新用户服务,支持用户注册、登录和Token刷新 - 修改数据库表结构,添加模块相关表和字段 - 更新文档,添加JWT认证和模块管理相关说明
108 lines
3.0 KiB
JavaScript
108 lines
3.0 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',
|
|
},
|
|
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;
|