Integration with Nuxt
We can use nuxt-elysia, a community plugin for Nuxt, to setup Elysia on Nuxt API route with Eden Treaty.
- Install the plugin with the following command:
bash
bun add elysia @elysiajs/eden
bun add -d nuxt-elysia- Add
nuxt-elysiato your Nuxt config:
ts
export default defineNuxtConfig({
modules: [
'nuxt-elysia'
]
})- Create
api.tsin the project root:
typescript
export default () => new Elysia()
.get('/hello', () => ({ message: 'Hello world!' })) - Use Eden Treaty in your Nuxt app:
vue
<template>
<div>
<p>{{ data.message }}</p>
</div>
</template>
<script setup lang="ts">
const { $api } = useNuxtApp()
const { data } = await useAsyncData(async () => {
const { data, error } = await $api.hello.get()
if (error)
throw new Error('Failed to call API')
return data
})
</script>This will automatically setup Elysia to run on Nuxt API route automatically.
pnpm
If you use pnpm, pnpm doesn't auto install peer dependencies by default forcing you to install additional dependencies manually.
bash
pnpm add @sinclair/typebox openapi-typesPrefix
By default, Elysia will be mounted on /_api but we can customize it with nuxt-elysia config.
ts
export default defineNuxtConfig({
nuxtElysia: {
path: '/api'
}
})This will mount Elysia on /api instead of /_api.
For more configuration, please refer to nuxt-elysia