Skip to content

Elysia ​

Install Required Packages ​

To set up your Elysia server with Remult, install the necessary packages:

sh
npm install elysia @elysiajs/node remult
npm install --save-dev tsx

Bootstrap Remult in the Backend ​

Remult is integrated into your backend using the remultApi adapter for Hono

INFO

Yes, the Elysia shares the same adapter as Hono!

  1. Create the API File

    Create a new api.ts file in the src/server/ folder with the following code to set up the Remult middleware:

    ts
    import { remultApi } from 'remult/remult-hono'
    
    export const api = remultApi({})
  2. Register the Middleware

    Update the index.ts file in your src/server/ folder to include the Remult middleware. Add the following code:

ts
import { Elysia } from "elysia";
import { node } from "@elysiajs/node";
import { api } from "./api.js";

const elysiaApp = new Elysia({ adapter: node() })
  .get("/", () => "Elysia meets Remult!")
  .mount("", api.fetch);

elysiaApp.listen(3000, () =>
  console.log("Server running on http://localhost:3000")
);

ESM Configuration

When using ECMAScript modules (esm) in Elysia, ensure you include the .js suffix when importing files, as shown in the import { api } from './api.js' statement.

Also, make sure that "type": "module" is set in your package.json.

Create the Server's TypeScript Configuration ​

In the root folder, create a TypeScript configuration file named tsconfig.server.json for the Elysia server:

json
{
  "compilerOptions": {
    "experimentalDecorators": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "outDir": "dist",
    "rootDir": "src",
    "module": "nodenext"
  },
  "include": ["src/server/**/*", "src/shared/**/*"]
}

This configuration enables TypeScript decorators, ensures compatibility with ECMAScript modules, and specifies the file paths for the server and shared code.

Create an npm Script to Start the API Server ​

Add a new script in your package.json to start the Elysia server in development mode:

json
"scripts": {
  "dev-node": "tsx watch --env-file=.env --tsconfig tsconfig.server.json src/server"
}
  • tsx: A TypeScript execution environment that watches for file changes and automatically restarts the server on each save.
  • --env-file=.env: Ensures environment variables are loaded from the .env file.
  • --tsconfig tsconfig.server.json: Specifies the TypeScript configuration file for the server.

Start the Elysia Server ​

Open a new terminal and run the following command to start the development server:

sh
npm run dev-node

tsx will watch for file changes, automatically restarting the Elysia server whenever updates are made.

MIT Licensed | Made by the Remult team with ❤️