MCPcopy Create free account
hub / github.com/fastify/fastify / fallbackErrorHandler

Function fallbackErrorHandler

lib/error-handler.js:85–122  ·  view source on GitHub ↗
(error, reply, cb)

Source from the content-addressed store, hash-verified

83}
84
85function fallbackErrorHandler (error, reply, cb) {
86 const res = reply.raw
87 const statusCode = reply.statusCode
88 reply[kReplyHeaders]['content-type'] = reply[kReplyHeaders]['content-type'] ?? 'application/json; charset=utf-8'
89 let payload
90 try {
91 const serializerFn = getSchemaSerializer(reply[kRouteContext], statusCode, reply[kReplyHeaders]['content-type'])
92 if (serializerFn === false) {
93 payload = serializeError({
94 error: statusCodes[statusCode + ''],
95 code: error.code,
96 message: error.message,
97 statusCode
98 })
99 } else {
100 payload = serializerFn(Object.create(error, {
101 error: { value: statusCodes[statusCode + ''] },
102 message: { value: error.message },
103 statusCode: { value: statusCode }
104 }))
105 }
106 } catch (err) {
107 // error is always FST_ERR_SCH_SERIALIZATION_BUILD
108 // because this is called from route/compileSchemasForSerialization
109 reply.server[kLogController].serializerError(err, reply.request, reply, { statusCode: res.statusCode })
110
111 reply.code(500)
112 payload = serializeError(new FST_ERR_FAILED_ERROR_SERIALIZATION(err.message, error.message))
113 }
114
115 if (typeof payload !== 'string' && !Buffer.isBuffer(payload)) {
116 payload = serializeError(new FST_ERR_REP_INVALID_PAYLOAD_TYPE(typeof payload))
117 }
118
119 reply[kReplyHeaders]['content-length'] = '' + Buffer.byteLength(payload)
120
121 cb(reply, payload)
122}
123
124function buildErrorHandler (parent = rootErrorHandler, func) {
125 if (!func) {

Callers 1

handleErrorFunction · 0.85

Calls 4

getSchemaSerializerFunction · 0.85
cbFunction · 0.85
serializerErrorMethod · 0.80
codeMethod · 0.80

Tested by

no test coverage detected