Node.js js优雅地关闭

Node.js js优雅地关闭,node.js,nestjs,Node.js,Nestjs,我在引导功能中启用了关机挂钩。我还在我的一个模块上订阅了应用程序关闭挂钩: public async onApplicationShutdown(signal): Promise<void> { console.log({signal}); ... } 但在这种情况下,我的OnApplicationShutton方法不会在数据库连接错误时触发,应用程序会立即关闭 如何从其组件触发Nest.js应用程序关闭?我相信您的问题可能是您的NestJS实例没有侦听关闭事件。您需要

我在引导功能中启用了关机挂钩。我还在我的一个模块上订阅了应用程序关闭挂钩:

public async onApplicationShutdown(signal): Promise<void>
{
   console.log({signal});
   ...
}
但在这种情况下,我的OnApplicationShutton方法不会在数据库连接错误时触发,应用程序会立即关闭


如何从其组件触发Nest.js应用程序关闭?

我相信您的问题可能是您的NestJS实例没有侦听关闭事件。您需要使用引导程序中的
app.enableShutdownHooks()
启用该行为

这是他们的指南:

异步函数引导(){
const app=wait NestFactory.create(AppModule);
//开始侦听关闭挂钩
app.enableShutdownHooks();
等待应用程序。聆听(3000);
}

你试过lightship吗?-@pravindot17非常有趣的软件包。非常感谢。我会学的。但是我试图找到一个内置的nest.js解决方案,您的数据库使用什么?最近,我发现Prisma劫持了关机信号,并在nestjs钩子启动之前终止了进程。
export class MyDbAccessImplementation {
   constructor() {
      this._pool = createPool(some);
      this._pool.query(`SELECT 'test' AS TEST`, (err) => {
         if (err !== null) {
            console.error(err);
            process.emit('SIGINT');
         }
      });
   }
}