Description
When an exception is thrown or when using console.trace()
, files paths are not aligned making it difficult to follow them at naked eye and specially to identify when it's one of your files, one internal module of if it's a file located inside node_modules
folder:
UnhandledPromiseRejectionWarning: SyntaxError: Identifier 'body' has already been declared
at Test.Runnable (/opt/app/node_modules/mocha/lib/runnable.js:36:25)
at new Test (/opt/app/node_modules/mocha/lib/test.js:24:12)
at context.it.context.specify (/opt/app/node_modules/mocha/lib/interfaces/bdd.js:85:18)
at Function.context.it.only (/opt/app/node_modules/mocha/lib/interfaces/bdd.js:96:46)
at Object.<anonymous> (/opt/app/src/modules/templates/template.spec.js:21:4)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:20:18)
at /opt/app/node_modules/mocha/lib/mocha.js:250:27
at Array.forEach (<anonymous>)
at Mocha.loadFiles (/opt/app/node_modules/mocha/lib/mocha.js:247:14)
at Mocha.run (/opt/app/node_modules/mocha/lib/mocha.js:576:10)
Not sure if this is done at v8
level, but my proposal is to add spaces between the function name and the file paths so this last ones gets aligned between themselves to the longest one. In the previous trace, it would get like:
UnhandledPromiseRejectionWarning: SyntaxError: Identifier 'body' has already been declared
at Test.Runnable (/opt/app/node_modules/mocha/lib/runnable.js:36:25)
at new Test (/opt/app/node_modules/mocha/lib/test.js:24:12)
at context.it.context.specify (/opt/app/node_modules/mocha/lib/interfaces/bdd.js:85:18)
at Function.context.it.only (/opt/app/node_modules/mocha/lib/interfaces/bdd.js:96:46)
at Object.<anonymous> (/opt/app/src/modules/templates/template.spec.js:21:4)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:20:18)
at /opt/app/node_modules/mocha/lib/mocha.js:250:27
at Array.forEach (<anonymous>)
at Mocha.loadFiles (/opt/app/node_modules/mocha/lib/mocha.js:247:14)
at Mocha.run (/opt/app/node_modules/mocha/lib/mocha.js:576:10)
There would be problems if some code is parsing the trace output taking in consideration to be just only a space between the function name and the file path instead of several spaces, so this change would need to be in a major version, but anyway exception traces are not standard and such libs are very few and mostly for debuging purposses so their impact will be low, and is a small change that they would be easily added.