Fix some DEV errors showing up as DEV: [{}]

Summary: Collections of errors were not reported correctly in the UI. Also, reporting errors could crash flipper if the error is not serializable (for example due to being cyclic).

Reviewed By: jknoxville

Differential Revision: D18595257

fbshipit-source-id: 689b6dbfe5d7daa6d84bd703dba9daa6be2e6b82
This commit is contained in:
Michel Weststrate
2019-11-21 06:28:24 -08:00
committed by Facebook Github Bot
parent 68d752dd21
commit f9f1d60267

View File

@@ -13,12 +13,21 @@ export class CancelledPromiseError extends Error {
this.name = 'CancelledPromiseError';
}
}
export function getStringFromErrorLike(e: any) {
if (typeof e == 'string') {
export function getStringFromErrorLike(e: any): string {
if (Array.isArray(e)) {
return e.map(getStringFromErrorLike).join(' ');
} else if (typeof e == 'string') {
return e;
} else if (e instanceof Error) {
return e.message;
return e.message || e.toString();
} else {
return JSON.stringify(e);
try {
return JSON.stringify(e);
} catch (e) {
// Stringify might fail on arbitrary structures
// Last resort: toString it.
return '' + e;
}
}
}