diff --git a/packages/rrweb/src/plugins/console/record/stringify.ts b/packages/rrweb/src/plugins/console/record/stringify.ts index a767793e8f..00b7245e32 100644 --- a/packages/rrweb/src/plugins/console/record/stringify.ts +++ b/packages/rrweb/src/plugins/console/record/stringify.ts @@ -91,7 +91,7 @@ export function stringify( const keys: unknown[] = []; return JSON.stringify( obj, - function (key, value: string | object | null | undefined) { + function (key, value: string | bigint | object | null | undefined) { /** * forked from https://github.com/moll/json-stringify-safe/blob/master/stringify.js * to deCycle the object @@ -120,6 +120,9 @@ export function stringify( if (shouldIgnore(value as object)) { return toString(value as object); } + if (typeof value === 'bigint') { + return value.toString() + 'n'; + } if (value instanceof Event) { const eventResult: Record = {}; for (const eventKey in value) { @@ -158,7 +161,7 @@ export function stringify( return true; } - // is function + // is function or bigint if (typeof _obj === 'function') { return true; } diff --git a/packages/rrweb/test/plugins/console/record.test.ts b/packages/rrweb/test/plugins/console/record.test.ts new file mode 100644 index 0000000000..f56bbf36ef --- /dev/null +++ b/packages/rrweb/test/plugins/console/record.test.ts @@ -0,0 +1,7 @@ +import { stringify } from '../../../src/plugins/console/record/stringify'; + +describe('console record plugin', () => { + it('can stringify bigint', () => { + expect(stringify(BigInt(1))).toEqual('"1n"'); + }); +});