Skip to content

[fix] seralization error of BigInt does not throw an exception #1769

@conneryn

Description

@conneryn

Describe the bug

Node.js version: v16.14.0
OS version: Ubuntu 18.04.6 LTS
Description:

When attempting to send a POST request with a payload that contains a BigInt value, the JSON serialization silently fails and proceeds with the post request using a POST body set to: "[unable to serialize, circular reference is too complex to analyze]"

NOTE: I have not tested or checked if other serialization issues (ex: an actual circular reference) also have this same behaviour, but I imagine they very likely could.

Actual behavior

Superagent fails to serialize the BigInt to JSON, but instead of throwing an error, it simply continues to processes the POST request with the POST body set to: "[unable to serialize, circular reference is too complex to analyze]"

Expected behavior

Ideally, superagent would properly handle BigInt numbers... but at the very least it should:

  1. throw an exception when it fails to serialize data, and
  2. have an error message that is more accurate to the issue (ex: "Cannot serialize BigInt value" rather than a confusing message about circular references).

Code to reproduce

const superagent = require("superagent");
const data = {
    number: BigInt("1")
};

superagent
    .post("https://httpbin.org/post")
    .send(data)
    .end((err, res) => {
        console.log("ERROR:", err);
        console.log("POST BODY SENT TO SERVER:", res.body.data);
    });

Result:

ERROR: null
POST BODY SENT TO SERVER: "[unable to serialize, circular reference is too complex to analyze]"

Checklist

  • I have searched through GitHub issues for similar issues.
  • I have completely read through the README and documentation.
  • I have tested my code with the latest version of Node.js and this package and confirmed it is still not working.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions