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
相关产品推荐
相关产品推荐

