Skip to content

Latest commit

 

History

History
136 lines (82 loc) · 4.67 KB

Errors.md

File metadata and controls

136 lines (82 loc) · 4.67 KB

Fastify

Errors

Error Handling

Uncaught errors are likely to cause memory leaks, file descriptor leaks and other major production issues. Domains were introduced to try fixing this issue, but they did not. Given the fact that it is not possible to process all uncaught errors sensibly, the best way to deal with them at the moment is to crash. In case of promises, make sure to handle errors correctly.

Fastify follows an all-or-nothing approach and aims to be lean and optimal as much as possible. Thus, the developer is responsible for making sure that the errors are handled properly. Most of the errors are usually a result of unexpected input data, so we recommend specifying a JSON.schema validation for your input data.

Fastify tries to catch as many uncaught errors it can without hindering performance. This includes:

  1. synchronous routes, e.g. app.get('/', () => { throw new Error('kaboom') })
  2. async routes, e.g. app.get('/', async () => { throw new Error('kaboom') })

In those two cases, the error will safely be caught by the promise and routed to the default error handler of Fastify for a generic Internal Server Error response. For customizing this behaviour, you should use setErrorHandler.

Fastify Error Codes

FST_ERR_BAD_URL

The router received an invalid url.

FST_ERR_CTP_ALREADY_PRESENT

The parser for this content type was already registered.

FST_ERR_CTP_INVALID_TYPE

The Content-Type should be a string.

FST_ERR_CTP_EMPTY_TYPE

The content type cannot be an empty string.

FST_ERR_CTP_INVALID_HANDLER

An invalid handler was passed for the content type.

FST_ERR_CTP_INVALID_PARSE_TYPE

The provided parse type is not supported. Accepted values are string or buffer.

FST_ERR_CTP_BODY_TOO_LARGE

The request body is larger than the provided limit.

FST_ERR_CTP_INVALID_MEDIA_TYPE

The received media type is not supported (i.e. there is no suitable Content-Type parser for it).

FST_ERR_CTP_INVALID_CONTENT_LENGTH

Request body size did not match Content-Length.

FST_ERR_DEC_ALREADY_PRESENT

A decorator with the same name is already registered.

FST_ERR_DEC_MISSING_DEPENDENCY

The decorator cannot be registered due to a missing dependency.

FST_ERR_HOOK_INVALID_TYPE

The hook name must be a string.

FST_ERR_HOOK_INVALID_HANDLER

The hook callback must be a function.

FST_ERR_LOG_INVALID_DESTINATION

The logger accepts either a 'stream' or a 'file' as the destination.

FST_ERR_REP_ALREADY_SENT

A response was already sent.

FST_ERR_SEND_INSIDE_ONERR

You cannot use send inside the onError hook.

FST_ERR_REP_INVALID_PAYLOAD_TYPE

Reply payload can either be a string or a Buffer.

FST_ERR_SCH_MISSING_ID

The schema provided does not have $id property.

FST_ERR_SCH_ALREADY_PRESENT

A schema with the same $id already exists.

FST_ERR_SCH_VALIDATION_BUILD

The JSON schema provided for validation to a route is not valid.

FST_ERR_SCH_SERIALIZATION_BUILD

The JSON schema provided for serialization of a route response is not valid.

FST_ERR_PROMISE_NOT_FULLFILLED

A promise may not be fulfilled with 'undefined' when statusCode is not 204.

FST_ERR_SEND_UNDEFINED_ERR

Undefined error has occurred.