返回顶部
N

NestJSNestJS常见错误

Avoid common NestJS mistakes — DI scoping, circular dependencies, validation pipes, and module organization traps.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,060
下载量
免费
免费
2
收藏
概述
安装方式
版本历史

NestJS

依赖注入

  • - Provider不可用 — 必须位于providers数组中,若被其他模块使用还需在exports中导出
  • 循环依赖会导致崩溃 — 在两个模块中使用forwardRef(() => Module)
  • 默认作用域为单例 — 跨请求共享同一实例,需注意状态管理
  • 请求作用域的provider — @Injectable({ scope: Scope.REQUEST }),会传播给依赖方

模块组织

  • - 导入模块而非直接导入provider — 使用imports: [UserModule]而非providers: [UserService]
  • exports使provider对导入方可用 — 不导出则provider保持私有
  • 全局模块需要@Global()装饰器 — 仅用于真正需要共享的模块(配置、日志)
  • forRoot()与forRootAsync() — 当配置依赖其他provider时使用异步方式

验证

  • - ValidationPipe需要class-validator装饰器 — 普通类不会进行验证
  • 启用transform: true实现自动转换 — 字符串1转为数字1
  • whitelist: true剔除未知属性 — forbidNonWhitelisted: true则抛出错误
  • 嵌套对象需要同时使用@ValidateNested()和@Type(() => NestedDto) — 两者缺一不可

执行顺序

  • - 中间件 → 守卫 → 拦截器(前置) → 管道 → 处理器 → 拦截器(后置) → 过滤器
  • 守卫无法访问转换后的请求体 — 守卫在管道之前执行
  • 全局管道在路由管道之前执行 — 但在守卫之后
  • 异常过滤器捕获整个链路的错误 — 包括守卫和管道

异常处理

  • - 使用throw new HttpException()而非return — 必须抛出异常才能被过滤器捕获
  • 自定义异常继承HttpException — 或实现ExceptionFilter
  • 未处理的异常返回500 — 在try/catch中包裹外部调用
  • 内置异常:BadRequestException、NotFoundException等 — 优先使用这些而非通用的HttpException

测试

  • - createTestingModule不会自动模拟 — 需在providers中显式提供模拟对象
  • 使用.overrideProvider(X).useValue(mock)覆盖 — 在.compile()之前调用
  • E2E测试需要app.init() — 并在afterAll中调用app.close()
  • 请求作用域的provider使单元测试复杂化 — 尽可能将其设为单例

常见错误

  • - 不带DTO的@Body()返回普通对象 — 无验证、无转换
  • @Param(id)始终为字符串 — 使用ParseIntPipe转换为数字:@Param(id, ParseIntPipe)
  • 守卫返回false返回403 — 抛出特定异常以获得更好的错误信息
  • 异步provider需要工厂函数 — useFactory: async () => await createConnection()
  • 忘记在异步服务方法前加await — 返回Promise而非实际值

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 nestjs-1776328649 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 nestjs-1776328649 技能

通过命令行安装

skillhub install nestjs-1776328649

下载

⬇ 下载 NestJS v1.0.0(免费)

文件大小: 1.96 KB | 发布时间: 2026-4-17 16:00

v1.0.0 最新 2026-4-17 16:00
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部