Skip to content

A small utility, used by Fastify itself, for generating consistent error objects across your codebase and plugins

License

Notifications You must be signed in to change notification settings

fastify/fastify-error

Folders and files

NameName
Last commit message
Last commit date

Latest commit

98b9db4 · Mar 30, 2025
Mar 30, 2025
Oct 3, 2023
Mar 12, 2025
Mar 12, 2025
Oct 7, 2023
Feb 8, 2024
Aug 17, 2022
Jun 21, 2020
Mar 12, 2025
Dec 8, 2024
Mar 12, 2025
Mar 12, 2025

Repository files navigation

@fastify/error

CI NPM version neostandard javascript style

A small utility, used by Fastify itself, for generating consistent error objects across your codebase and plugins.

Install

npm i @fastify/error

Usage

The module exports a function that you can use for consistent error objects, it takes 4 parameters:

createError(code, message [, statusCode [, Base [, captureStackTrace]]])
  • code (string, required) - The error code, you can access it later with error.code. For consistency, we recommend prefixing plugin error codes with FST_
  • message (string, required) - The error message. You can also use interpolated strings for formatting the message.
  • statusCode (number, optional) - The status code that Fastify will use if the error is sent via HTTP.
  • Base (ErrorConstructor, optional) - The base error object that will be used. (eg TypeError, RangeError)
  • captureStackTrace (boolean, optional) - Whether to capture the stack trace or not.
const createError = require('@fastify/error')
const CustomError = createError('ERROR_CODE', 'Hello')
console.log(new CustomError()) // error.message => 'Hello'

How to use an interpolated string:

const createError = require('@fastify/error')
const CustomError = createError('ERROR_CODE', 'Hello %s')
console.log(new CustomError('world')) // error.message => 'Hello world'

How to add cause:

const createError = require('@fastify/error')
const CustomError = createError('ERROR_CODE', 'Hello %s')
console.log(new CustomError('world', {cause: new Error('cause')}))
// error.message => 'Hello world'
// error.cause => Error('cause')

TypeScript

It is possible to limit your error constructor with a generic type using TypeScript:

const CustomError = createError<[string]>('ERROR_CODE', 'Hello %s')
new CustomError('world')
//@ts-expect-error
new CustomError(1)

License

Licensed under MIT.