Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: circular structure to JSON starting at object with constructor 'ClientRequest' property 'socket' -> object with constructor 'Socket'

Im getting the following error when I try to make post request to my own typeorm API using axios:

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 (C:\Users\Usuario\Documents\Manga-Api\Manga-Api\node_modules\express\lib\response.js:1123:12)
    at ServerResponse.json (C:\Users\Usuario\Documents\Manga-Api\Manga-Api\node_modules\express\lib\response.js:260:14)
    at ServerResponse.send (C:\Users\Usuario\Documents\Manga-Api\Manga-Api\node_modules\express\lib\response.js:158:21)
    at C:\Users\Usuario\Documents\Manga-Api\Manga-Api\src\managers\scrape.manager.ts:163:33
    at processTicksAndRejections (node:internal/process/task_queues:93:5)

I have tried to use some libraries to fix the circular structure JSON and parse it but both failed:

const safeStringify = require('json-stringify-safe');
const CircularJSON = require('circular-json');

None of the entities's relations have cascade option added.

await axios.post(apiName+'/object', data, { headers: { Authorization: res.req.headers.authorization } }).then(response => { res.send(response); });

Data example with the object I want to persist in my database:

data = {
    "response": "Manga created",
    "manga": {
        "magazine": {
            "name": "JUMP SQ.",
            "japanName": "ジャンプSQ.",
            "website": "https://jumpsq.shueisha.co.jp/sq/",
            "releaseDate": "",
            "id": 33,
            "mangas": [
                {
                    "finished": false,
                    "id": 91,
                    "chapter": 312,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 166,
                    "chapter": 201,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 175,
                    "chapter": 85,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 202,
                    "chapter": 95,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 363,
                    "chapter": 94,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 366,
                    "chapter": 124,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 456,
                    "chapter": 46,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 515,
                    "chapter": 50,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 520,
                    "chapter": 14,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 567,
                    "chapter": 14,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 1024,
                    "chapter": 0,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                }
            ]
        },
        "author": {
            "name": "AIMOTO SHOU",
            "japanName": "",
            "id": 417,
            "mangas": [
                {
                    "finished": false,
                    "id": 456,
                    "chapter": 46,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                },
                {
                    "finished": false,
                    "id": 1024,
                    "chapter": 0,
                    "state": false,
                    "published": false,
                    "updated": false,
                    "priority": 0
                }
            ]
        },
        "languages": [
            {
                "code": 0,
                "name": "Kemono Jihen"
            },
            {
                "code": 1,
                "name": "怪物事変"
            }
        ]
    }
}

If I try to post this JSON via Postman It works propperly. Buy not by code, maybe due the circular problem with the Entities

like image 786
Miguelo Avatar asked Oct 27 '25 18:10

Miguelo


1 Answers

As @backtick said, I was supposed to do res.send(response.data) not the whole response object. Thank you

like image 144
Miguelo Avatar answered Oct 29 '25 07:10

Miguelo