node.js - Nest.js 优雅关闭

标签 node.js nestjs

这个问题在这里已经有了答案:





How to trigger application shutdown from a service in Nest.js?

(1 个回答)


6 个月前关闭。




我在引导函数中启用了关闭 Hook 。我还订阅了我的模块之一的应用程序关闭 Hook :

public async onApplicationShutdown(signal): Promise<void>
{
   console.log({signal});
   ...
}

现在我可以按 Ctrl+C并在终端阅读一条极好的消息。然后我的资源发布工作正常。

如果数据库连接失败,我也想关闭我的应用程序:
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');
         }
      });
   }
}

但在这种情况下,我的 onApplicationShutdown 方法不会在数据库连接错误时触发,应用程序会立即关闭。

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

最佳答案

我相信您的问题可能是您的 NestJS 实例没有监听关闭事件。您需要使用 app.enableShutdownHooks() 启用该行为在你的 bootstrap 中。
这是来自他们的 Lifecycles Events指导:

async function bootstrap() {
  const app = await NestFactory.create(AppModule);

  // Starts listening for shutdown hooks
  app.enableShutdownHooks();

  await app.listen(3000);
}

关于node.js - Nest.js 优雅关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61892684/

相关文章:

node.js - 我可以获得快速错误处理程序来捕获 Mongoose 回调中抛出的异常吗?

javascript - helpers {{#if }} 不使用expressjs 和express3-handlebars 进行渲染

node.js - 离开屏幕回调 React Navigation Tab Navigator

NestJS - 组合多个 Guards 并在其中一个返回 true 时激活

node.js - 如何在nodejs中取消unirest请求

windows - Windows 上的 Node.js 和 Express

node.js - 尚未为模型 "ResourceSchema"注册架构。 - 巢.js

javascript - @nestjs/swagger 没有设置授权 header

node.js - 如何在nest js中实现guard的集成测试?

javascript - 测试函数不能同时接受 'done' 回调