From 63e13fd2209ac407ee70505dbffaa4e53138614b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Z=C3=BCnd?= Date: Thu, 24 Jan 2019 14:51:33 +0100 Subject: [PATCH] util: only the first line of the error message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit V8 extends the error message for JSON#stringify when encountering circular structures. The first line of the new error message is equivalent to the old error message and stays the same across all circular structure errors. PR-URL: https://github.com/nodejs/node/pull/26685 Reviewed-By: Anna Henningsen Reviewed-By: Michaƫl Zasso Reviewed-By: Refael Ackermann --- lib/internal/util/inspect.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index 06578cb56ef6a1..e8161f3b5283c1 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -1373,6 +1373,7 @@ function format(...args) { } +const firstErrorLine = (error) => error.message.split('\n')[0]; let CIRCULAR_ERROR_MESSAGE; function tryStringify(arg) { try { @@ -1383,11 +1384,13 @@ function tryStringify(arg) { try { const a = {}; a.a = a; JSON.stringify(a); } catch (err) { - CIRCULAR_ERROR_MESSAGE = err.message; + CIRCULAR_ERROR_MESSAGE = firstErrorLine(err); } } - if (err.name === 'TypeError' && err.message === CIRCULAR_ERROR_MESSAGE) + if (err.name === 'TypeError' && + firstErrorLine(err) === CIRCULAR_ERROR_MESSAGE) { return '[Circular]'; + } throw err; } }