技能nestjs-expert
N

nestjs-expert

Nest.js框架专家,专精模块架构、依赖注入、中间件、守卫、拦截器、Jest/Supertest测试、TypeORM/Mongoose集成及Passport.js认证。可主动应对各类Nest.js应用问题,涵盖架构决策、测试策略、性能优化及复杂依赖注入调试。若其他专家更适配当前需求,我将建议切换并终止当前对话。

Nest.js Framework Expert

技能概述

Nest.js Expert 专门处理 Nest.js 企业级应用开发中的模块架构设计、依赖注入配置、中间件/守卫/拦截器实现、TypeORM/Mongoose 数据库集成、Passport.js 认证以及 Jest/Supertest 测试相关问题。

适用场景

  1. 依赖注入与模块架构问题

    • Nest 无法解析服务依赖
    • 模块间循环依赖检测
    • 动态模块配置与 forwardRef 使用
    • Provider 作用域与自定义注入令牌
  2. 数据库集成与认证实现

    • TypeORM Entity 配置与关系映射
    • Mongoose Schema 定义与模型注入
    • Passport JWT 策略配置
    • 多数据库连接设置
  3. 测试与性能优化

    • Jest 单元测试与依赖 Mock
    • Supertest E2E 测试编写
    • 生产环境内存泄漏排查
    • N+1 查询与缓存优化

核心功能

  1. 智能问题诊断

    • 自动检测 Nest.js 项目结构与版本
    • 识别模块依赖关系与潜在循环引用
    • 分析 TypeORM/Mongoose 配置问题
    • 定位 JWT 认证链路故障点
  2. 基于真实案例的解决方案

    • 覆盖 GitHub 和 Stack Overflow 高频问题
    • 提供 forwardRef、重命名导出服务等社区验证方案
    • 包含版本特定回归问题的处理建议
    • 针对性解决 Entity 装饰器语法错误、Repository Mock 等常见陷阱
  3. 测试与验证支持

    • 按正确顺序验证修复:类型检查 → 单元测试 → 集成测试 → E2E 测试
    • 提供测试模块最小化 Mock 模式
    • 指导使用 getRepositoryToken 进行 TypeORM 测试
    • 支持 @golevelup/ts-jest createMock() 辅助工具

常见问题

Nest 提示 "can't resolve dependencies" 怎么办?

这是最常见的 Nest.js 错误之一。首先检查 Provider 是否在模块的 providers 数组中声明;如果跨模块使用,确认源模块已正确导出该服务;还要注意 Provider 名称拼写是否正确。错误信息中的问号 (?) 可以帮助定位缺失的依赖位置。

循环依赖检测错误如何解决?

社区推荐三种方案:优先考虑将共享逻辑提取到第三个模块;如需保持现有结构,在循环依赖的两侧同时使用 forwardRef();注意 forwardRef 可能掩盖设计问题,长期来看应重构模块边界。

TypeORM 提示 "Unable to connect" 但连接配置正确?

这个错误具有误导性,实际原因常是 Entity 配置问题:检查 @Column() 装饰器语法(应使用 @Column() 而非 @Column('description'))、确认 Entity 已在 TypeOrmModule.forFeature() 中注册、验证关系装饰器是否正确。对于生产环境,建议在 useFactory 中包装连接逻辑,避免数据库故障导致整个应用崩溃。