TypeError: Converting circular structure to JSON
I get the "Converting circular structure to JSON" error in my project, and I know it happens in one of my "res.send"s. But it doesn't happen every time the API is called, as I sometimes see it in my logs. The server is in production mode and there is no report about it from users.
Environment
- Inversify Version: 6.0.1
- Node.js 18.16.1
- Operating System and version: Ubuntu 22.04.2 LTS
Stack trace
TypeError: Converting circular structure to JSON
--> starting at object with constructor 'ServerResponse'
| property 'socket' -> object with constructor 'Socket'
--- property '_httpMessage' closes the circle
at JSON.stringify (
I also have the same problem which does not happen every time and it does not interrupt the operation but it is very annoying.
I faced the same issue.
Based on my observation, the problem arises when the server's response is sent after connection is dropped and return res.sendStatus() syntax is used. In my case, I was able to resolve the issue by modifying the code as follows.
I changed this:
public async healthCheck(req: Request, res: Response) {
try {
const results = await Promise.allSettled([
checkDatabases(),
[...]
]);
[...]
return res.sendStatus(200);
} catch (error) {
return res.sendStatus(500);
}
}
to this (removed return statement)
public async healthCheck(req: Request, res: Response) {
try {
const results = await Promise.allSettled([
checkDatabases(),
[...]
]);
[...]
res.sendStatus(200);
} catch (error) {
res.sendStatus(500);
}
}
After this, I was no longer able to reproduce the issue. Not sure if this is expected behaviour.