From 1b4896a1f0b2f85504a4f58b6ab8b5d8f9e1b1c1 Mon Sep 17 00:00:00 2001 From: Baobhan Sith <80159437+Heavrnl@users.noreply.github.com> Date: Tue, 29 Apr 2025 19:09:08 +0800 Subject: [PATCH] Update index.ts --- packages/backend/src/index.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 93415e6..3465413 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -29,6 +29,28 @@ import './services/notification.processor.service'; // 确保处理器被加载 import './services/notification.dispatcher.service'; // 确保分发器被加载并监听处理器事件 // --- 结束通知系统初始化 --- // --- 环境变量和密钥初始化 --- + +// --- 全局错误处理 --- +// 捕获未处理的 Promise Rejection +process.on('unhandledRejection', (reason: any, promise: Promise) => { + console.error('---未处理的 Promise Rejection---'); + console.error('原因:', reason); + // 可以在这里添加更详细的日志记录,例如将错误发送到监控系统 + // 注意:根据 Node.js 官方建议,未来版本的 Node.js 可能会默认在 unhandledRejection 时终止进程。 + // 目前我们选择记录错误并继续运行,但这可能导致应用程序状态不一致。 + }); + + // 捕获未捕获的同步异常 + process.on('uncaughtException', (error: Error) => { + console.error('---未捕获的异常---'); + console.error('错误:', error); + // 记录错误,但避免退出进程,尝试让服务器继续运行(有风险) + // 在生产环境中,更安全的做法可能是记录错误后优雅地关闭服务器并重启。 + // process.exit(1); // 强制退出(更安全,但会中断服务) + }); + // --- 结束全局错误处理 --- + + const initializeEnvironment = async () => { // 1. 加载根目录的 .env 文件 (定义部署模式等) // 注意: __dirname 在 dist/src 中,所以需要回退三级到项目根目录