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

NestJS控制器返回函数代码而非预期JSON的问题求助

问题解决

你的核心问题是控制器中返回了服务层函数的引用,而非执行函数后的结果。

在当前控制器代码里,你返回的是函数本身:

signup() {
  return this.authService.signup; // 这里返回的是函数引用
}

需要改成调用函数(添加括号()),才能拿到函数执行后的预期返回值:

修改后的控制器代码:

/* eslint-disable semi */
import { Controller, Get, Header, Post } from '@nestjs/common';
import { AuthService } from './auth.service';

@Controller('auth')
export class AuthController {
  constructor(private authService: AuthService) {}

  // POST /auth/signup
  @Post('signup')
  @Header('content-type', 'application/json')
  signup() {
    return this.authService.signup(); // 调用函数,获取返回值
  }

  // POST /auth/signin
  @Post('signin')
  @Header('content-type', 'application/json')
  signin() {
    return this.authService.signin(); // 同样修改此处
  }
}

原因说明:

  • this.authService.signup 是对函数的引用,NestJS序列化时会把函数对象转换成代码文本返回,这就是你看到响应体是函数代码的原因。
  • 添加()后,this.authService.signup()会执行该函数,返回你在服务层定义的{ msg: 'hello' },NestJS会自动将这个对象序列化成JSON响应返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:40:17