NestJS HealthCheck控制器报错:缺失TERMINUS_ERROR_LOGGER依赖
解决NestJS Terminus健康检查依赖错误
问题原因
报错提示TERMINUS_ERROR_LOGGER依赖缺失,核心原因是你没有在模块中正确导入TerminusModule——这个模块会自动提供TERMINUS_ERROR_LOGGER等HealthCheckService所需的内部依赖。
修复步骤
1. 在对应模块中导入TerminusModule
找到你的AppModule或专门的HealthModule,确保导入TerminusModule,同时如果使用TypeOrm连接数据库,也要保证TypeOrmModule已正确配置:
import { Module } from '@nestjs/common'; import { TerminusModule } from '@nestjs/terminus'; import { TypeOrmModule } from '@nestjs/typeorm'; import { HealthCheckController } from './health-check.controller'; @Module({ imports: [ // 必须导入TerminusModule,它会自动注入所需的内部依赖 TerminusModule, // 配置TypeOrm数据库连接(根据你的实际数据库信息调整) TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'your-db-username', password: 'your-db-password', database: 'your-db-name', autoLoadEntities: true, synchronize: false, // 生产环境建议关闭该选项 }), ], controllers: [HealthCheckController], }) export class AppModule {}
2. 检查版本兼容性
确保@nestjs/terminus的版本与你的NestJS核心版本完全匹配:
- NestJS 9.x → 安装
@nestjs/terminus@9.x - NestJS 10.x → 安装
@nestjs/terminus@10.x
若版本不匹配,执行对应命令重新安装:
# 以NestJS 10.x为例 npm install @nestjs/terminus@10
3. 验证修复效果
启动项目后,访问/health-check接口,应该能正常返回数据库连接状态的健康检查响应。
扩展建议
如果未来需要添加更多健康检查项(比如第三方API、Redis缓存等),只需两步:
- 导入对应的
HealthIndicator(比如HttpHealthIndicator) - 在
health.check数组中添加对应检查逻辑:
// 示例:新增第三方API健康检查 constructor( private readonly health: HealthCheckService, private db: TypeOrmHealthIndicator, private http: HttpHealthIndicator, // 导入HTTP健康指示器 ) { } @Get() @HealthCheck() readiness() { return this.health.check([ async () => this.db.pingCheck('postgres', { timeout: 300 }), async () => this.http.pingCheck('external-api', 'https://api.example.com'), // 新增HTTP检查项 ]); }
内容的提问来源于stack exchange,提问作者Andres Ospina
相关产品推荐
相关产品推荐

