123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- const express = require('express');
- require('dotenv').config();
- const responseMiddleware = require('./src/middlewares/responseMiddleware');
- const errorMiddleware = require('./src/middlewares/errorMiddleware');
- const logsMiddleware = require('./src/middlewares/logsMiddleware');
- const logger = require('./src/utils/logger');
- const connectDB = require('./src/database/mongo');
- const app = express();
- const port = process.env.PORT || 3000;
- /**
- * 将日志记录器挂载到全局
- */
- global.logger = logger;
- /**
- * 连接到数据库
- */
- connectDB();
- /**
- * 用于解析来自客户端的请求体中的 JSON 数据
- */
- app.use(express.json());
- /**
- * 静态文件资源目录
- */
- app.use(express.static('public'));
- /**
- * 使用Morgan中间件来记录HTTP请求日志
- */
- app.use(logsMiddleware);
- /**
- * 添加统一响应API数据格式
- */
- app.use(responseMiddleware);
- /**
- * 添加路由API接口
- * 可以支持多个版本
- */
- app.use('/api/v1', require('./src/routes/v1/index'));
- //app.use('/api/v2', require('./src/routes/v2/index'));
- /**
- * 处理未匹配到的路由
- */
- app.use((req, res, next) => {
- res.sendApiResponse(404, null, 'Route not found')
- });
- /**
- * 全局处理异常 -- 尽量通过 try catch 后的 next(err),会触发这里
- */
- app.use(errorMiddleware)
- /**
- * 全局异常处理器 -- 没有合理的使用try catch时,程序中断了,会触发这里
- */
- process.on('uncaughtException', (err) => {
- console.error(err.stack);
- logger.error(err.stack);
- // 记录错误到日志文件或日志记录系统
- // 发送通知,例如通过电子邮件、短信或Slack等方式
- // 重启应用程序,例如使用自动重启工具或编写脚本来重新启动应用
- // 关闭服务器
- process.exit(1);
- });
- /**
- * 监听服务端口
- */
- app.listen(port, () => {
- console.log(`Server is running on port ${port}`);
- });
|