Nest.js Expert 是一个专注于 Nest.js 框架的专家型技能,面向企业级 Node.js 应用架构、依赖注入模式、装饰器、中间件、守卫、拦截器、管道、测试策略、数据库集成与鉴权系统。
用途
当需要处理 Nest.js 项目中的架构设计、模块组织、依赖注入、请求生命周期、测试与数据库集成等问题时,可调用该技能。它会在调用时先判断问题是否更适合其他专门专家,例如纯 TypeScript 类型问题、数据库查询优化、Node.js 运行时问题、前端 React 问题,若更匹配则建议切换并停止。
主要能力
- 模块架构与依赖注入:处理循环依赖、provider 作用域冲突、模块导入等问题,并给出解决优先级:重构模块结构、使用 forwardRef、调整 provider 作用域。
- 控制器与请求处理:路由冲突、DTO 校验、响应序列化,配合 nest generate controller、class-validator、class-transformer。
- 中间件、守卫、拦截器与管道:执行顺序(Middleware → Guards → Interceptors(前) → Pipes → 路由处理器 → Interceptors(后))、上下文访问、异步操作与错误处理。
- 测试策略(Jest 与 Supertest):mock 依赖、测试模块、e2e 测试搭建,使用 @nestjs/testing、Jest、Supertest。
- 数据库集成(TypeORM 与 Mongoose):连接管理、实体关系、迁移,TypeORM 使用 @nestjs/typeorm、实体装饰器、repository 模式;Mongoose 使用 @nestjs/mongoose、schema 装饰器、模型注入。
- 鉴权与授权(Passport.js):策略配置、JWT 处理、守卫实现,使用 @nestjs/passport、@nestjs/jwt、passport 策略。
- 配置与环境管理:@nestjs/config、Joi 校验、异步配置。
- 错误处理与日志:异常过滤器、日志配置、错误传播,使用内置 Logger 与自定义异常过滤器。
使用方式
技能会先通过内部工具(Read、Grep、Glob)检测 Nest.js 项目设置,识别架构模式与已有模块,再应用 Nest.js 最佳实践给出方案。检测命令示例包括:
- 检查 Nest.js 设置:
test -f nest-cli.json && echo "Nest.js CLI project detected" - 检查是否安装框架:
grep -q "@nestjs/core" package.json && echo "Nest.js framework installed" - 检查 TypeScript 配置:
test -f tsconfig.json && echo "TypeScript configuration found" - 检测版本:
grep "@nestjs/core" package.json | sed 's/.*"\([0-9\.]*\)".*/Nest.js version: \1/' - 检测数据库:
grep -q "@nestjs/typeorm" package.json && echo "TypeORM integration detected"、grep -q "@nestjs/mongoose" package.json && echo "Mongoose integration detected"、grep -q "@prisma/client" package.json && echo "Prisma ORM detected" - 检测鉴权:
grep -q "@nestjs/passport" package.json && echo "Passport authentication detected"、grep -q "@nestjs/jwt" package.json && echo "JWT authentication detected" - 分析模块结构:
find src -name "*.module.ts" -type f | head -5 | xargs -I {} basename {} .module.ts安全提示:避免 watch/serve 进程,仅使用一次性诊断。 修复验证顺序:npm run build(先类型检查) →npm run test(单元测试) →npm run test:e2e(e2e 测试)。诊断工具还包括nest info、npm run build -- --watch=false、npm run lint。
适用场景
- 企业级 Nest.js 应用的架构设计与模块划分。
- 依赖注入报错排查,如「Nest can't resolve dependencies of the [Service] (?)」「Circular dependency detected」。
- e2e 测试依赖无法解析、TypeORM 数据库连接失败、未知鉴权策略 'jwt'、secretOrPrivateKey 缺失等问题的定位与修复。
- 模块导出配置错误(导出模块而非服务)、多数据库连接配置、生产环境内存泄漏排查。
限制
- 若问题更匹配其他专门专家,该技能会建议切换而非继续处理。
- NestJS 的依赖注入错误信息出于安全考虑通常较为笼统,可能需要用 verbose 日志或自定义错误信息辅助调试。
- 文档提到 forwardRef 可能掩盖更深层的设计问题,社区对此有提醒。
- 具体版本相关回归问题需结合对应版本的 GitHub issue 处理。