mirror of
https://github.com/nodejs/node.git
synced 2025-05-21 06:53:52 +00:00

While inspecting errors, always visualize the cause. That property is non-enumerable by default while being useful in general for debugging. Duplicated stack frames are hidden. Signed-off-by: Ruben Bridgewater <ruben@bridgewater.de> PR-URL: https://github.com/nodejs/node/pull/41002 Fixes: https://github.com/nodejs/node/issues/40859 Fixes: https://github.com/nodejs/node/issues/38725 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
32 lines
800 B
JavaScript
32 lines
800 B
JavaScript
'use strict';
|
|
|
|
require('../common');
|
|
|
|
const { inspect } = require('util');
|
|
|
|
class FoobarError extends Error {
|
|
status = 'Feeling good';
|
|
}
|
|
|
|
const cause1 = new TypeError('Inner error');
|
|
const cause2 = new FoobarError('Individual message', { cause: cause1 });
|
|
cause2.extraProperties = 'Yes!';
|
|
const cause3 = new Error('Stack causes', { cause: cause2 });
|
|
|
|
process.nextTick(() => {
|
|
const error = new RangeError('New Stack Frames', { cause: cause2 });
|
|
const error2 = new RangeError('New Stack Frames', { cause: cause3 });
|
|
|
|
inspect.defaultOptions.colors = true;
|
|
|
|
console.log(inspect(error));
|
|
console.log(inspect(cause3));
|
|
console.log(inspect(error2));
|
|
|
|
inspect.defaultOptions.colors = false;
|
|
|
|
console.log(inspect(error));
|
|
console.log(inspect(cause3));
|
|
console.log(inspect(error2));
|
|
});
|