서버 진입점
[!NOTE] 서버 진입점은 기본적으로 선택 사항입니다. 제공하지 않으면 TanStack Start가 아래 내용을 기본값으로 사용하여 서버 진입점을 자동으로 처리합니다.
서버 진입점은 Cloudflare Workers 및 기타 WinterCG 호환 런타임에서 일반적으로 사용하는 범용 fetch 핸들러 형식을 지원합니다.
상호 운용성을 보장하려면 기본 export가 ServerEntry 인터페이스를 준수해야 합니다:
export default {
fetch(req: Request, opts?: RequestOptions): Response | Promise<Response> {
// ...
},
}
TanStack Start는 생성을 타입 안전하게 만드는 래퍼를 제공합니다. 이 작업은 src/server.ts 파일에서 수행됩니다.
// src/server.ts
import handler, { createServerEntry } from '@tanstack/react-start/server-entry'
export default createServerEntry({
fetch(request) {
return handler.fetch(request)
},
})
앱을 정적으로 생성하든 동적으로 제공하든, server.ts 파일은 모든 SSR 관련 작업을 수행하고 서버 라우트와 서버 함수 요청을 처리하는 진입점입니다.
사용자 지정 서버 핸들러
애플리케이션의 렌더링 방식을 변경하는 사용자 지정 서버 핸들러를 만들 수 있습니다:
// src/server.ts
import {
createStartHandler,
defaultStreamHandler,
defineHandlerCallback,
} from '@tanstack/react-start/server'
import { createServerEntry } from '@tanstack/react-start/server-entry'
const customHandler = defineHandlerCallback((ctx) => {
// add custom logic here
return defaultStreamHandler(ctx)
})
const fetch = createStartHandler(customHandler)
export default createServerEntry({
fetch,
})
요청 컨텍스트
서버에서 추가적인 타입 지정 데이터를 요청 핸들러에 전달해야 하는 경우(예: 인증된 사용자 정보, 데이터베이스 연결 또는 요청별 플래그), TypeScript 모듈 확장을 통해 요청 컨텍스트 타입을 등록합니다. 등록된 컨텍스트는 서버 fetch 핸들러의 두 번째 인수로 전달되며 전역 미들웨어, 요청/함수 미들웨어, 서버 라우트, 서버 함수 및 라우터 자체를 포함한 서버 측 미들웨어 체인 전체에서 사용할 수 있습니다.
요청 컨텍스트에 타입을 추가하려면 @tanstack/react-router의 Register 인터페이스를 server.requestContext 속성으로 확장합니다. 그러면 handler.fetch에 전달하는 런타임 context가 해당 타입과 일치하게 됩니다. 예:
import handler, { createServerEntry } from '@tanstack/react-start/server-entry'
type MyRequestContext = {
hello: string
foo: number
}
declare module '@tanstack/react-router' {
interface Register {
server: {
requestContext: MyRequestContext
}
}
}
export default createServerEntry({
async fetch(request) {
return handler.fetch(request, { context: { hello: 'world', foo: 123 } })
},
})
서버 구성
서버 진입점에서 서버별 동작을 구성할 수 있습니다:
- 요청/응답 미들웨어
- 사용자 지정 오류 처리
- 인증 로직
- 데이터베이스 연결
- 로깅 및 모니터링
이러한 유연성을 통해 프레임워크의 규칙을 유지하면서 TanStack Start 애플리케이션의 서버 측 렌더링 처리 방식을 사용자 지정할 수 있습니다.
Cloudflare Workers
Cloudflare Workers에 배포할 때 server.ts를 확장하여 큐, 예약된 이벤트, Durable Objects와 같은 추가 Workers 기능을 처리할 수 있습니다. 종합적인 가이드는 TanStack Start용 Cloudflare Workers 문서를 참조하세요.