When upgrading to Node 24, if you console.log a VError, it crashes the process. Sample program:
const { VError } = require('verror')
const rootError = new Error('This is the root cause')
const err = new VError(rootError, 'This is a VError wrapping the previous error')
console.log('Print the VError:', err)
console.log('I finished running')
On Node 24:
❯ node errtest.js
node:internal/util/inspect:1183
if (!isStackOverflowError(err)) throw err;
^
TypeError: Cannot read properties of undefined (reading 'value')
at formatProperty (node:internal/util/inspect:2280:12)
at formatRaw (node:internal/util/inspect:1176:9)
at formatValue (node:internal/util/inspect:932:10)
at inspect (node:internal/util/inspect:409:10)
at formatWithOptionsInternal (node:internal/util/inspect:2645:40)
at formatWithOptions (node:internal/util/inspect:2507:10)
at console.value (node:internal/console/constructor:360:14)
at console.log (node:internal/console/constructor:416:61)
at Object.<anonymous> (/Users/test/errtest.js:6:9)
at Module._compile (node:internal/modules/cjs/loader:1761:14)
Node.js v24.12.0
On Node 22:
❯ node errtest.js
Print the VError: VError: This is a VError wrapping the previous error: This is the root cause
at Object.<anonymous> (/Users/test/errtest.js:4:13)
at Module._compile (node:internal/modules/cjs/loader:1730:14)
at Object..js (node:internal/modules/cjs/loader:1895:10)
at Module.load (node:internal/modules/cjs/loader:1465:32)
at Function._load (node:internal/modules/cjs/loader:1282:12)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
at node:internal/main/run_main_module:36:49 {
jse_shortmsg: 'This is a VError wrapping the previous error',
jse_cause: Error: This is the root cause
at Object.<anonymous> (/Users/test/errtest.js:3:19)
at Module._compile (node:internal/modules/cjs/loader:1730:14)
at Object..js (node:internal/modules/cjs/loader:1895:10)
at Module.load (node:internal/modules/cjs/loader:1465:32)
at Function._load (node:internal/modules/cjs/loader:1282:12)
at TracingChannel.traceSync (node:diagnostics_channel:322:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:235:24)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5)
at node:internal/main/run_main_module:36:49,
jse_info: {},
cause: [Function: ve_cause]
}
I finished running
When upgrading to Node 24, if you console.log a VError, it crashes the process. Sample program:
On Node 24:
❯ node errtest.js node:internal/util/inspect:1183 if (!isStackOverflowError(err)) throw err; ^ TypeError: Cannot read properties of undefined (reading 'value') at formatProperty (node:internal/util/inspect:2280:12) at formatRaw (node:internal/util/inspect:1176:9) at formatValue (node:internal/util/inspect:932:10) at inspect (node:internal/util/inspect:409:10) at formatWithOptionsInternal (node:internal/util/inspect:2645:40) at formatWithOptions (node:internal/util/inspect:2507:10) at console.value (node:internal/console/constructor:360:14) at console.log (node:internal/console/constructor:416:61) at Object.<anonymous> (/Users/test/errtest.js:6:9) at Module._compile (node:internal/modules/cjs/loader:1761:14) Node.js v24.12.0On Node 22:
❯ node errtest.js Print the VError: VError: This is a VError wrapping the previous error: This is the root cause at Object.<anonymous> (/Users/test/errtest.js:4:13) at Module._compile (node:internal/modules/cjs/loader:1730:14) at Object..js (node:internal/modules/cjs/loader:1895:10) at Module.load (node:internal/modules/cjs/loader:1465:32) at Function._load (node:internal/modules/cjs/loader:1282:12) at TracingChannel.traceSync (node:diagnostics_channel:322:14) at wrapModuleLoad (node:internal/modules/cjs/loader:235:24) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5) at node:internal/main/run_main_module:36:49 { jse_shortmsg: 'This is a VError wrapping the previous error', jse_cause: Error: This is the root cause at Object.<anonymous> (/Users/test/errtest.js:3:19) at Module._compile (node:internal/modules/cjs/loader:1730:14) at Object..js (node:internal/modules/cjs/loader:1895:10) at Module.load (node:internal/modules/cjs/loader:1465:32) at Function._load (node:internal/modules/cjs/loader:1282:12) at TracingChannel.traceSync (node:diagnostics_channel:322:14) at wrapModuleLoad (node:internal/modules/cjs/loader:235:24) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:171:5) at node:internal/main/run_main_module:36:49, jse_info: {}, cause: [Function: ve_cause] } I finished running