首页 > 解决方案 > Nest.js RangeError:超出最大调用堆栈大小

问题描述

我想使用 axios 和 nestjs 向外部 api 发出请求。

使用 axios 接受了 Nestjs这个答案,而不是在控制器中执行请求,我创建了一个服务

// controller
import { Controller, Get } from '@nestjs/common';
import { CollectService } from './collect.service';


@Controller('collect')
export class CollectController {
    constructor(private collectService: CollectService) {}


    @Get()
    getResponse(){
         this.getResponse();

    }
   

}

// ----------service ------------------------

import { Injectable, HttpService } from '@nestjs/common';

@Injectable()
export class CollectService {

    constructor(private httpService: HttpService) {}


    async getResponse() {
       
        const response = await this.httpService.get('https://reqres.in/api/users/2').toPromise();
        return response.data;

    
     
        }
      
}


这给了我一个stackoverflow


[Nest] 23928   - 02/28/2021, 12:16:18 PM   [ExceptionsHandler] Maximum call stack size exceeded +74479ms
RangeError: Maximum call stack size exceeded

是什么导致了这种行为?

标签: typescriptaxiosnestjs

解决方案


您调用控制器的getResponse()无穷大,然后它会引发Maximum call stack size exceeded错误。

我认为您想改为调用服务的功能:

    @Get()
    getResponse(){
         this.collectService.getResponse();

    }

推荐阅读