这个问题在这里已经有了答案:
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/