diff --git a/src/compiler.js b/src/compiler.js index c9889c8..0be3dff 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -101,7 +101,9 @@ class CompiledProtodef { const buffer = Buffer.allocUnsafe(length) tryCatch(() => this.write(packet, buffer, 0, type), (e) => { - e.message = `Write error for ${e.field} : ${e.message}` + let packetStr = '' + try { packetStr = JSON.stringify(packet) } catch (err) { try { packetStr = String(packet) } catch (err) {} } + e.message = `Write error for ${e.field} in ${packetStr} : ${e.message}` throw e }) return buffer diff --git a/src/utils.js b/src/utils.js index ab07739..0c23bb8 100644 --- a/src/utils.js +++ b/src/utils.js @@ -46,8 +46,10 @@ function addErrorField (e, field) { throw e } -function tryCatch (tryfn, catchfn) { - try { return tryfn() } catch (e) { catchfn(e) } +function tryCatch(tryfn, catchfn) { + const oldLimit = Error.stackTraceLimit + Error.stackTraceLimit = Math.max(40, oldLimit) + try { return tryfn() } catch (e) { catchfn(e) } finally { Error.stackTraceLimit = oldLimit } } function tryDoc (tryfn, field) {