@@ -11,13 +11,13 @@ export function stringifyError(error: unknown, noStack = false): string {
11
11
// Has a custom toString() method
12
12
str = `${ ( error as any ) . toString ( ) } `
13
13
} else {
14
- const strings : string [ ] = [ ]
15
- if ( typeof ( error as any ) . rawError === 'string' ) strings . push ( ` ${ ( error as any ) . rawError } ` ) // Is an UserError
16
- if ( typeof ( error as Error ) . message === 'string' ) strings . push ( ` ${ ( error as Error ) . message } ` ) // Is an Error
17
- if ( typeof ( error as any ) . reason === 'string' ) strings . push ( ` ${ ( error as any ) . reason } ` ) // Is a Meteor.Error
18
- if ( typeof ( error as any ) . details === 'string' ) strings . push ( ` ${ ( error as any ) . details } ` )
19
-
20
- str = strings . join ( ', ' )
14
+ const strings : ( string | undefined ) [ ] = [
15
+ stringify ( ( error as any ) . rawError ) , // UserError
16
+ stringify ( ( error as Error ) . message ) , // Error
17
+ stringify ( ( error as any ) . reason ) , // Meteor.Error
18
+ stringify ( ( error as any ) . details ) ,
19
+ ]
20
+ str = strings . filter ( Boolean ) . join ( ', ' )
21
21
}
22
22
23
23
if ( ! str ) {
@@ -46,3 +46,15 @@ export function stringifyError(error: unknown, noStack = false): string {
46
46
47
47
return str
48
48
}
49
+
50
+ function stringify ( v : any ) : string | undefined {
51
+ // Tries to stringify objects if they have a toString() that returns something sensible
52
+ if ( v === undefined ) return undefined
53
+ if ( v === null ) return 'null'
54
+
55
+ if ( typeof v === 'object' ) {
56
+ const str = `${ v } `
57
+ if ( str !== '[object Object]' ) return str
58
+ return undefined
59
+ } else return `${ v } `
60
+ }
0 commit comments