Skip to content
Our Sponsors
Open in Anthropic

title: 与 SvelteKit 集成 - ElysiaJS head: - - meta - property: 'og:title' content: 与 SvelteKit 集成 - ElysiaJS

- - meta
  - name: 'description'
    content: 使用 SvelteKit,您可以在服务器路由上运行 Elysia。

- - meta
  - property: 'og:description'
    content: 使用 SvelteKit,您可以在服务器路由上运行 Elysia。

与 SvelteKit 集成

使用 SvelteKit,您可以在服务器路由上运行 Elysia。

  1. 创建 src/routes/[...slugs]/+server.ts
  2. 定义一个 Elysia 服务器。
  3. 导出一个调用 app.handlefallback 函数。
typescript
// src/routes/[...slugs]/+server.ts
import { Elysia, t } from 'elysia';

const app = new Elysia()
    .get('/', 'hello SvelteKit')
    .post('/', ({ body }) => body, {
        body: t.Object({
            name: t.String()
        })
    })

interface WithRequest {
	request: Request
}

export const fallback = ({ request }: WithRequest) => app.handle(request) 

您可以将 Elysia 服务器视为普通的 SvelteKit 服务器路由。

前缀

如果您将 Elysia 服务器放置在应用路由器的非根目录中,您需要为 Elysia 服务器添加前缀注释。

例如,如果您将 Elysia 服务器放在 src/routes/api/[...slugs]/+server.ts 中,您需要为 Elysia 服务器将前缀注释为 /api

typescript
// src/routes/api/[...slugs]/+server.ts
import { 
Elysia
,
t
} from 'elysia';
const
app
= new
Elysia
({
prefix
: '/api' })
.
get
('/', () => 'hi')
.
post
('/', ({
body
}) =>
body
, {
body
:
t
.
Object
({
name
:
t
.
String
()
}) }) type
RequestHandler
= (
v
: {
request
: Request }) => Response |
Promise
<Response>
export const
fallback
:
RequestHandler
= ({
request
}) =>
app
.
handle
(
request
)

这将确保 Elysia 路由在任何您放置它的位置都能正常工作。

请参考 SvelteKit 路由 获取更多信息。