H3 server adapter
trpc-vue-query project includes a trpc server adapter for h3, the web framework that powers nitro and nuxt.
For nuxt, a complete example is available at example-nuxt directory, including both client and server integration.
WARNING
Subscriptions/Websocket is not supported
WARNING
trpc-vue-query is designed for trpc v11. See support matrix in overview for details
Step 1: Install required packages
Assuming you already got h3/nitro/nuxt setup already.
npm i -S @trpc-vue-query/h3-adapter @trpc/server@nextpnpm add @trpc-vue-query/h3-adapter @trpc/server@nextyarn add @trpc-vue-query/h3-adapter @trpc/server@nextStep 2: Initialize trpc and create router
Basically following the backend guide from trpc. You might want to place trpc-related code into server/ in nuxt context.
import { initTRPC } from "@trpc/server";
const t = initTRPC.create();
export const router = t.router;
export const publicProcedure = t.procedure;import { publicProcedure, router } from "./trpc";
const appRouter = router({
greeting: publicProcedure.query(() => "hello tRPC v11!"),
});
export type AppRouter = typeof appRouter;Note that the type AppRouter will be available in trpc/app.ts for this case. You might need to adjust that path in your framework.
Step 3: Install router handler
TRPC will be available on "/trpc" for httpBatchLink input.
import { createApp, createRouter, defineEventHandler } from "h3";
import { h3RequestHandler } from "@trpc-vue-query/h3-adapter";
import { router } from "./trpc/trpc";
const app = createApp();
const r = createRouter();
r.use(
"/trpc/:trpc",
h3RequestHandler({
router, // <-- This router is trpc's router, not h3 router
}),
);
app.use(r);To change the route parameter name, pass the name into h3RequestHandler as routeParam if you must:
// This is possible, but not recommended. Stick with `:trpc` for parameter name unless
// there is good reason to change.
r.use(
"/trpc/:something",
h3RequestHandler({
router,
routeParam: "something",
}),
);