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

NestJS控制器传递Request/Response参数报错:期望2实参却传入6个

问题解决:NestJS控制器调用服务方法的参数传递错误

错误原因

你在控制器的verifyToken方法中,错误地将装饰器@Req()和参数声明req:Request直接作为实参传入服务的getVerifyToken方法,这属于语法误用——@Req()这类装饰器仅能用于控制器方法的参数位置,用于注入请求对象,不能直接写在函数调用的参数列表里,这导致TypeScript解析出了不符合预期的参数数量,从而抛出错误。

修正方案

将@Req()和@Res()装饰器移到控制器verifyToken方法的参数位置,获取注入的请求、响应对象后,再传递给服务方法:

修正后的控制器代码

@Controller()
export class AppController
{
  constructor(private readonly appService: AppService) {}

  @Get('/whatsapp')
  verifyToken(@Req() req: Request, @Res() res: Response) {
    this.appService.getVerifyToken(req, res);
  }
}

额外提示

  1. 你的环境变量拼写有误:ACCES_TOKEN_FB应该改为ACCESS_TOKEN_FB,否则会导致验证逻辑中accessToken值为undefined,验证永远失败。
  2. 由于服务方法中已经通过res.send()直接处理了响应,控制器方法无需返回值;如果需要保留NestJS的响应处理流程,可以给@Res()添加{ passthrough: true }选项,但当前场景下不需要。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:32:39