Skip to content

yfrans/elysia-http-error

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Elysia HTTP Error

Throw HTTP errors from Elysia handlers.

Usage

Install the package:

bun add elysia-http-error

Then use httpError() in Elysia pipeline as follow:

const app = new Elysia().use(httpError());

By default, this module will return a structured message with the error details.

If you need the message to be a simple string, use:

returnStringOnly: true;

when initializing httpError().

Another option is to write a custom error message formatter using:

customFormatter: (err: HttpError) => any;

which allows a full control over the returned error object.

For example:

customFormatter: (err) => `Oh no... we got an error ${err.statusCode}!`;

In order to use the HttpError class and throw an error, the HttpError decorator must be added to the pipeline:

const app = new Elysia().use(httpErrorDecorator).get("/", ({ HttpError }) => {
  throw HttpError.BadRequest("Something went wrong...");
});

The HttpError constructor receive the following parameters:

error: string (error message, optional)
errorData: any (more error details, optional)

For example, when using OTP validation and the user is asking for a new OTP while the OTP is still valid, the error can contain the message and the time left for the OTP so the client can display a proper message and sync the time displayed to the user:

throw HttpError.Conflict("OTP is still valid", {
  timeLeft: otpExpireTime - Date.now(),
});

Some important notes

The plugin initializer must be called when initializing Elysia and before any other handler that use this plugin.

When using dependecy injection and sub-modules, the decorator must be used in the sub-module definition in order to get full type support (see https://elysiajs.com/patterns/dependency-injection.html#dependency-injection)

About

Easy http error handling in Elysia.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published