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

NestJS控制器读取Cookie报错:Request类型无cookies属性

解决NestJS中Express Request类型缺少cookies属性的问题

问题重现

按照NestJS官方文档编写读取Cookie的控制器代码时,遇到TypeScript类型错误:

import { Controller, Get, Render, Req } from '@nestjs/common';

@Controller()
export class AppController {

  @Get()
  @Render('home')
  getHello(@Req() req: Request) {
    return { text: req.cookies['id'] };
  }
}

报错信息:

src/app.controller.ts:11:24 - error TS2339: Property 'cookies' does not exist on type 'Request'.

11     return { text: req.cookies['id'] };
                          ~~~~~~~

直接移除Request类型标注虽然能运行,但会丢失TypeScript的类型安全性。

解决方案

1. 导入Express的Request类型

你当前使用的Request是全局DOM环境的类型,并非Express框架的Request类型。需要从express包中导入正确的类型:

修改控制器代码:

import { Controller, Get, Render, Req } from '@nestjs/common';
// 导入Express的Request类型
import { Request } from 'express';

@Controller()
export class AppController {

  @Get()
  @Render('home')
  getHello(@Req() req: Request) {
    return { text: req.cookies['id'] };
  }
}

2. 确保已配置cookie-parser中间件

NestJS默认不会自动启用cookie解析,需要在main.ts中注册cookie-parser中间件(如果还没安装,先执行npm install cookie-parser @types/cookie-parser):

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as cookieParser from 'cookie-parser';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  // 注册cookie解析中间件
  app.use(cookieParser());
  await app.listen(3000);
}
bootstrap();

这样修改后,TypeScript就能正确识别req.cookies属性,同时保留类型安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:15:31