You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Nuxt3中实现服务器关机时优雅断开数据库连接?

在Nuxt3中实现服务器关机时断开数据库连接的方案

Nuxt3底层基于Nitro运行时,原有Nuxt2的钩子逻辑不再适用,需要通过Nitro的生命周期钩子来实现服务器关闭时的数据库断开操作,具体步骤如下:

  • 在项目根目录创建server/plugins/close-db.ts文件,编写Nitro插件监听关闭事件:
export default defineNitroPlugin((nitroApp) => {
  // 监听Nitro服务器关闭钩子
  nitroApp.hooks.hook('close', async () => {
    // 执行数据库断开逻辑
    // 示例:如果使用Prisma,就是 await prisma.$disconnect()
    console.log('服务器关闭,已断开数据库连接');
  });

  // 兜底监听系统SIGINT信号(Ctrl+C触发)
  process.on('SIGINT', async () => {
    // 重复执行数据库断开逻辑
    // await prisma.$disconnect()
    console.log('捕获终止信号,已断开数据库连接');
    process.exit(0);
  });
});
  • 原理说明:Nuxt3的nuxt.config.ts中的钩子仅针对应用初始化阶段,服务器层面的关闭事件需要通过Nitro插件处理,Nitro的close钩子会在服务器正常关闭时触发;同时监听SIGINT信号可以覆盖手动按Ctrl+C终止进程的场景,确保数据库连接能被正确断开。

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 08:17:40