From e56b5be904e097bf2b95cdac5922675bf3452e6a Mon Sep 17 00:00:00 2001 From: Jean Lauliac Date: Fri, 10 Feb 2017 09:25:53 -0800 Subject: [PATCH] packager: JSONReporter: expose errors correctly Reviewed By: cpojer Differential Revision: D4536721 fbshipit-source-id: d8969a42e844da809bd167cbc1bae2cb11f1db57 --- packager/src/lib/JsonReporter.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packager/src/lib/JsonReporter.js b/packager/src/lib/JsonReporter.js index 6d47bc0c5..05c5549e2 100644 --- a/packager/src/lib/JsonReporter.js +++ b/packager/src/lib/JsonReporter.js @@ -13,7 +13,7 @@ import {Writable} from 'stream'; -class JsonReporter { +class JsonReporter { _stream: Writable; @@ -21,7 +21,20 @@ class JsonReporter { this._stream = stream; } + /** + * There is a special case for errors because they have non-enumerable fields. + * (Perhaps we should switch in favor of plain object?) + */ update(event: TEvent) { + /* $FlowFixMe: fine to call on `undefined`. */ + if (Object.prototype.toString.call(event.error) === '[object Error]') { + event = {...event}; + event.error = { + ...event.error, + message: event.error.message, + stack: event.error.stack, + }; + } this._stream.write(JSON.stringify(event) + '\n'); }