axios TypeError:正在将循环结构转换为JSON -->从具有构造函数'ClientRequest'的对象开始

9o685dep  于 2023-01-02  发布在  iOS
关注(0)|答案(8)|浏览(425)

我是一个nest.js初学者,我试图用我的代码实现Axios,发生了这个错误,我想修复它。

--> starting at object with constructor 'ClientRequest'
    |     property 'socket' -> object with constructor 'Socket'
    --- property '_httpMessage' closes the circle +188941ms
TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'ClientRequest'
    |     property 'socket' -> object with constructor 'Socket'
    --- property '_httpMessage' closes the circle
    at JSON.stringify (<anonymous>)
    at stringify (D:\CUSportcomplex-register\sso-reg\node_modules\express\lib\response.js:1123:12)
    at ServerResponse.json (D:\CUSportcomplex-register\sso-reg\node_modules\express\lib\response.js:260:14)
    at ExpressAdapter.reply (D:\CUSportcomplex-register\sso-reg\node_modules\@nestjs\platform-express\adapters\express-adapter.js:24:57)
    at RouterResponseController.apply (D:\CUSportcomplex-register\sso-reg\node_modules\@nestjs\core\router\router-response-controller.js:13:36)
    at D:\CUSportcomplex-register\sso-reg\node_modules\@nestjs\core\router\router-execution-context.js:173:48
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async D:\CUSportcomplex-register\sso-reg\node_modules\@nestjs\core\router\router-execution-context.js:47:13
    at async D:\CUSportcomplex-register\sso-reg\node_modules\@nestjs\core\router\router-proxy.js:9:17

这是我的app.service.ts

async validateSSO(appticket): Promise<SsoContent> {
        let instance = axios.create({
            baseURL: "http://localhost:8080/",
            headers: {
                'DeeAppId': config.DeeAppId,
                'DeeAppSecret': config.DeeAppSecret,
                'DeeTicket': appticket
            }
        });
        instance.get("/serviceValidation")
            .then(response => {
                this.ssoContent = response;
            })
            .catch(error => {
                return (error);
            });

        return this.ssoContent;

    }

这是我的应用程序控制器

@Get('validation/:appticket')
    async validateSSO(
        @Param('appticket') appticket: string
        //DeeAppTicket is sented via Front-end
    ): Promise<SsoContent> {
        return this.registeringService.validateSSO(appticket);
    }

谢谢你的帮助:)

xmq68pz9

xmq68pz91#

首先,nest.js为您提供了开箱即用的HttpService,您可以通过DI注入它:https://docs.nestjs.com/techniques/http-module
第二,您尝试存储整个响应对象,该对象是复杂的数据结构,包含错误消息(类型错误:将循环结构转换为JSON)
您应该做的是Map所需的数据而不是存储整个循环对象,
或者您应该查找一些能够解析循环json的库:https://www.npmjs.com/package/flatted

btxsgosb

btxsgosb2#

与存储整个响应对象(循环对象)不同,您可以存储响应的data对象键,这应该可以正常工作

n3ipq98p

n3ipq98p3#

当您忘记在 async 函数中放置关键字 await 时,也会发生这种情况。

jw5wzhpr

jw5wzhpr4#

今天我遇到了这个问题,我设法解决它的一个方法是,而不是返回:

this.ssoContent = response;

我回答说:

this.ssoContent = response.data;
z0qdvdin

z0qdvdin5#

当你忘记在异步函数中放入关键字await时,也会发生这种情况。
帮我解决了。
我觉得自己好傻...

rqqzpn5f

rqqzpn5f6#

当我的应用程序(nest.js应用程序)尝试向另一个应用程序(Nest.js应用程序)发送请求时,我遇到了这个问题。这个问题是服务器的响应。我无法解决它,而是使用超级代理库。https://www.npmjs.com/package/superagent它很容易解决。

kkih6yb8

kkih6yb87#

我正在使用TypeORM与NestJS,并得到了几次以下错误:

TypeError: Converting circular structure to JSON
--> starting at object with constructor 'EntityMetadata'
|     property 'ownColumns' -> object with constructor 'Array'
|     index 0 -> object with constructor 'ColumnMetadata'
--- property 'entityMetadata' closes the circle

这是因为我忘记了查询构建器末尾的getOne()getMany()

a2mppw5e

a2mppw5e8#

您可以简单地使用circular json.ref:https://www.npmjs.com/package/circular-json
安装时:npm i circular-jsonnpm i circular-json --force
代码:

const CircularJSON = require('circular-json');
const obj=CircularJSON.stringify(object)

这里对象可以是圆形或普通的json对象。

相关问题