expressServer/app.js
LingandRX 352323262c refactor(user): 重构用户相关代码并优化登录功能
- 移除 app.js 中的冗余配置
- 更新 userController.js 中的导入和函数名称
- 修改 Search.js 中的类名
- 重构 userService.js 中的 login 和其他用户相关函数
- 优化错误处理和事务管理
2025-01-01 12:04:27 +08:00

94 lines
2.4 KiB
JavaScript
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.

const createError = require('http-errors')
const express = require('express')
const path = require('path')
const logger = require('morgan')
const cors = require('cors')
const session = require('express-session')
const { RedisStore } = require('connect-redis')
const Redis = require('ioredis')
const cookieParser = require('cookie-parser')
const indexRouter = require('./routes/index')
const userRouter = require('./routes/userRouter')
const accountRouter = require('./routes/accountRouter')
require('dotenv').config()
// mongodb数据库连接
const { connectMongoDB } = require('./config/mongodbConfig')
const loginUtil = require('./utils/loginUtil')
// 初始化 Redis 客户端
const redisClient = new Redis({
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT || 6379,
password: process.env.REDIS_PASSWORD,
db: 0
})
const app = express()
app.use(logger('dev'))
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
app.use(express.static(path.join(__dirname, 'public')))
app.use(cookieParser())
app.use(
session({
name: 'identityKey',
store: new RedisStore({ client: redisClient }),
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: {
httpOnly: true,
maxAge: 24 * 60 * 60 * 1000
}
})
)
const corsOptions = {
origin: 'http://localhost:5173', // 指定允许的源
credentials: true, // 允许发送凭据(如 cookies
optionsSuccessStatus: 200,
allowdHeaders: ['Content-Type', 'Authorization']
}
app.use(cors(corsOptions))
async function startServer() {
try {
await connectMongoDB()
} catch (error) {
console.error('Server error:', error)
process.exit(1)
}
}
startServer()
app.use('/', indexRouter)
app.use('/user', loginUtil.authenticateSession, userRouter)
app.use('/account', accountRouter)
// catch 404 and forward to error handler
app.use(function (req, res, next) {
next(createError(404))
})
// error handler
app.use(function (err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message
res.locals.error = req.app.get('env') === 'development' ? err : {}
// render the error page
res.status(err.status || HTTP_STATUS.INTERNAL_SERVER_ERROR)
res.json({
error: true,
message: err.message || 'Something went wrong',
// 只在开发环境下返回堆栈信息
...(req.app.get('env') === 'development' ? { stack: err.stack } : {})
})
})
module.exports = app