Considere mi situación: estoy creando un ejemplo de módulo node js xyz.js main.js es mi archivo de nodo principal, por ejemplo, se llama a una función desde xyz y causó el error debido a que se pasaron argumentos no válidos, ahora solo quiero consolar la línea y el número de línea de main.js que causó el error.
// main.js const fs = require('fs') const xyz = require('./xyz') try { const values = xyz(1, 2) // missing 3rd parameter console.log(values) } catch (e) { console.warn('Error:', e.message) e.stack .split('\n') .slice(1) .map(r => r.match(/\((?<file>.*):(?<line>\d+):(?<pos>\d+)\)/)) .forEach(r => { if (r && r.groups && r.groups.file.substr(0, 8) !== 'internal') { const { file, line, pos } = r.groups const f = fs.readFileSync(file, 'utf8').split('\n') console.warn(' ', file, 'at', line+':'+pos) console.warn(' ', f[line-1].trim()) } }) } // xyz.js module.exports = (a, b, c) => { if (typeof a === 'undefined') throw new Error("Parameter A is not set") if (typeof b === 'undefined') throw new Error("Parameter B is not set") if (typeof c === 'undefined') throw new Error("Parameter C is not set") return { a, b, c } }Pero como he dicho, la pila del Error original tiene más sentido para mí.