You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@nestjsx/crud+TypeORM+PostgreSQL时遇req.parsed解构为空错误

问题描述

我正尝试按照官方文档搭建基础API端点,已成功通过Swagger生成接口页面,但访问http://localhost:3000/app-user/1098时出现如下错误:

ERROR [ExceptionsHandler] Cannot destructure property 'parsed' of 'req' as it is null.
TypeError: Cannot destructure property 'parsed' of 'req' as it is null.
    at AppUserService.getMany (C:\tmp\crud-demo\node_modules\@nestjsx\crud-typeorm\src\typeorm-crud.service.ts:99:13)
    at AppUserController.getManyBase (C:\tmp\crud-demo\node_modules\@nestjsx\crud\src\crud\crud-routes.factory.ts:215:27)
    at C:\tmp\crud-demo\node_modules\@nestjs\core\router\router-execution-context.js:38:29

使用的依赖版本如下:

{
    "@nestjs/common": "^10.0.0",
    "@nestjs/core": "^10.0.0",   
    "@nestjs/typeorm": "^10.0.0",
    "@nestjsx/crud": "^5.0.0-alpha.3",
    "@nestjsx/crud-request": "^5.0.0-alpha.3",
    "@nestjsx/crud-typeorm": "^5.0.0-alpha.3",
    "pg": "^8.11.3",
    "typeorm": "^0.3.17"
}
解决方案

这个错误源于@nestjsx/crud v5 alpha版本与NestJS v10的兼容性问题,核心是crud模块无法正确处理NestJS v10的请求对象结构,可通过以下方式修复:

  • 降级NestJS版本:将@nestjs/common、@nestjs/core、@nestjs/typeorm降级到v9.x版本(如^9.0.0),v5版本的crud原本就是为NestJS v9设计的,这是最直接的解决办法。
  • 注册Crud请求拦截器:在对应功能模块中全局注册CrudRequestInterceptor,确保请求对象被正确解析:
    import { Module } from '@nestjs/common';
    import { APP_INTERCEPTOR } from '@nestjs/core';
    import { CrudRequestInterceptor } from '@nestjsx/crud';
    import { AppUserController } from './app-user.controller';
    import { AppUserService } from './app-user.service';
    
    @Module({
      controllers: [AppUserController],
      providers: [
        AppUserService,
        {
          provide: APP_INTERCEPTOR,
          useClass: CrudRequestInterceptor,
        },
      ],
    })
    export class AppUserModule {}
    
  • 检查路由配置:访问/app-user/1098是单条数据查询,却触发了getMany方法,可能是控制器的@Crud装饰器配置有误,确保正确绑定实体模型:
    import { Crud, CrudController } from '@nestjsx/crud';
    import { AppUser } from './app-user.entity';
    import { AppUserService } from './app-user.service';
    
    @Crud({
      model: {
        type: AppUser,
      },
    })
    export class AppUserController implements CrudController<AppUser> {
      constructor(public service: AppUserService) {}
    }
    

内容的提问来源于stack exchange,提问作者igorludi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 21:43:21