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 cookieParser = require('cookie-parser') const indexRouter = require('./routes/index') const userRouter = require('./routes/userRouter') // mongodb数据库连接 const { connectMongoDB } = require('./db/mongodbConfig') const loginUtil = require('./utils/loginUtil') const app = express() // 导入env require('dotenv').config() const loginSecret = process.env.SESSION_SECRET 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', secret: loginSecret, resave: false, saveUninitialized: false, cookie: { secure: false, maxAge: 1000 * 60 * 10 } }) ) app.use(cors()) async function startServer() { try { await connectMongoDB() } catch (error) { console.error('Server error:', error) process.exit(1) } } startServer() // app.use(loginUtil.authenticateSeesion) // app.use('/', loginUtils.aopMiddleware, indexRouter); app.use('/', indexRouter) app.use('/user',loginUtil.authenticateSeesion, userRouter) // 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 || 500) res.json({ error: true, message: err.message || 'Something went wrong', // 只在开发环境下返回堆栈信息 ...(req.app.get('env') === 'development' ? { stack: err.stack } : {}) }) }) module.exports = app