Migrate project from typing_practiceweb
This commit is contained in:
79
server/config.ts
Normal file
79
server/config.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
// server/config.ts
|
||||
import dotenv from 'dotenv';
|
||||
|
||||
// 加载环境变量
|
||||
dotenv.config();
|
||||
|
||||
// 环境变量类型定义
|
||||
interface Config {
|
||||
PORT: number;
|
||||
MONGODB_URI: string;
|
||||
JWT_SECRET: string;
|
||||
NODE_ENV: 'development' | 'production' | 'test';
|
||||
CORS_ORIGIN: string;
|
||||
}
|
||||
|
||||
// 环境变量验证
|
||||
const requiredEnvVars = ['MONGODB_URI', 'JWT_SECRET'] as const;
|
||||
for (const envVar of requiredEnvVars) {
|
||||
if (!process.env[envVar]) {
|
||||
throw new Error(`Missing required environment variable: ${envVar}`);
|
||||
}
|
||||
}
|
||||
|
||||
// 配置对象
|
||||
export const config: Config = {
|
||||
PORT: parseInt(process.env.PORT || '5001', 10),
|
||||
MONGODB_URI: process.env.MONGODB_URI!,
|
||||
JWT_SECRET: process.env.JWT_SECRET || 'your_jwt_secret_key_here',
|
||||
NODE_ENV: (process.env.NODE_ENV as Config['NODE_ENV']) || 'development',
|
||||
CORS_ORIGIN: process.env.CORS_ORIGIN || 'http://localhost:3000',
|
||||
};
|
||||
|
||||
// JWT 配置
|
||||
export const JWT_CONFIG = {
|
||||
expiresIn: '7d', // token 有效期
|
||||
issuer: 'typeskill', // 签发者
|
||||
};
|
||||
|
||||
// 数据库配置
|
||||
export const DB_CONFIG = {
|
||||
useNewUrlParser: true,
|
||||
useUnifiedTopology: true,
|
||||
// 如果需要其他 MongoDB 配置选项,可以在这里添加
|
||||
};
|
||||
|
||||
// API 路径配置
|
||||
export const API_PATHS = {
|
||||
AUTH: '/api/auth',
|
||||
KEYWORDS: '/api/keywords',
|
||||
CODE_EXAMPLES: '/api/code-examples',
|
||||
PRACTICE_TYPES: '/api/practice-types',
|
||||
PRACTICE_RECORDS: '/api/practice-records',
|
||||
LEADERBOARD: '/api/leaderboard',
|
||||
ADMIN: {
|
||||
USERS: '/api/users',
|
||||
PRACTICE_RECORDS: '/api/practice-records/all'
|
||||
}
|
||||
} as const;
|
||||
|
||||
// 分页配置
|
||||
export const PAGINATION = {
|
||||
DEFAULT_PAGE_SIZE: 10,
|
||||
MAX_PAGE_SIZE: 100,
|
||||
} as const;
|
||||
|
||||
// 安全配置
|
||||
export const SECURITY = {
|
||||
SALT_ROUNDS: 10, // 密码加密轮数
|
||||
PASSWORD_MIN_LENGTH: 6,
|
||||
PASSWORD_MAX_LENGTH: 50,
|
||||
} as const;
|
||||
|
||||
// 缓存配置
|
||||
export const CACHE = {
|
||||
TTL: 60 * 60, // 1小时(秒)
|
||||
} as const;
|
||||
|
||||
// 导出默认配置
|
||||
export default config;
|
||||
Reference in New Issue
Block a user