1
1
// @ts -check
2
2
import { Buffer } from 'buffer'
3
3
4
- import { NETLIFYDEVERR } from '../../utils/command-helpers.mjs'
4
+ import { chalk , log , NETLIFYDEVERR } from '../../utils/command-helpers.mjs'
5
5
import renderErrorTemplate from '../render-error-template.mjs'
6
6
7
7
import { detectAwsSdkError } from './utils.mjs'
@@ -16,27 +16,48 @@ const addHeaders = (headers, response) => {
16
16
} )
17
17
}
18
18
19
- export const handleSynchronousFunction = function ( err , result , request , response ) {
20
- if ( err ) {
21
- return handleErr ( err , request , response )
19
+ export const handleSynchronousFunction = function ( {
20
+ error : invocationError ,
21
+ functionName,
22
+ request,
23
+ response,
24
+ result,
25
+ } ) {
26
+ if ( invocationError ) {
27
+ return handleErr ( invocationError , request , response )
22
28
}
23
29
24
30
const { error } = validateLambdaResponse ( result )
25
31
if ( error ) {
26
- console . log ( `${ NETLIFYDEVERR } ${ error } ` )
32
+ log ( `${ NETLIFYDEVERR } ${ error } ` )
27
33
return handleErr ( error , request , response )
28
34
}
29
35
30
36
response . statusCode = result . statusCode
31
- addHeaders ( result . headers , response )
32
- addHeaders ( result . multiValueHeaders , response )
37
+
38
+ try {
39
+ addHeaders ( result . headers , response )
40
+ addHeaders ( result . multiValueHeaders , response )
41
+ } catch ( headersError ) {
42
+ formatError ( headersError )
43
+
44
+ log ( `${ NETLIFYDEVERR } Failed to set header in function ${ chalk . yellow ( functionName ) } : ${ headersError . message } ` )
45
+
46
+ return handleErr ( headersError , request , response )
47
+ }
33
48
34
49
if ( result . body ) {
35
50
response . write ( result . isBase64Encoded ? Buffer . from ( result . body , 'base64' ) : result . body )
36
51
}
37
52
response . end ( )
38
53
}
39
54
55
+ const formatError = ( err ) => {
56
+ err . errorType = err . code
57
+ err . errorMessage = err . message
58
+ err . stackTrace = err . trace
59
+ }
60
+
40
61
const formatLambdaLocalError = ( err , acceptsHtml ) =>
41
62
acceptsHtml
42
63
? JSON . stringify ( {
0 commit comments