我在引导函数中启用了关闭挂钩。我还在我的模块之一订阅了应用程序关闭挂钩:
public async onApplicationShutdown(signal): Promise<void>
{
console.log({signal});
...
}
Run Code Online (Sandbox Code Playgroud)
现在我可以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');
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我的 onApplicationShutdown 方法不会因数据库连接错误而触发,并且应用程序会立即关闭。
如何从其组件触发 Nest.js 应用程序关闭?
JP *_*rre 12
我相信您的问题可能是您的 NestJS 实例没有侦听关闭事件。您需要在app.enableShutdownHooks()引导程序中启用该行为。
这是来自他们的生命周期事件指南:
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// Starts listening for shutdown hooks
app.enableShutdownHooks();
await app.listen(3000);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15932 次 |
| 最近记录: |