tRPC v10中使用createProxySSGHelpers调用Mutation失败求助
tRPC v10中Mutation无法通过SSG Helpers执行的问题解决
问题现象
getCookie Query可正常执行,但setCookie Mutation无法被客户端TS识别,执行时抛出错误:
TRPCError: No "query"-procedure on path "setChesskidCookie"
服务端Router代码
export const appRouter = router({ getCookie: publicProcedure .input(z.string()) .query(async ({ input }) => { return "🍪" }), setCookie: publicProcedure .input(z.string()) .mutation(async ({ input }) => { console.log("🍪🍪🍪🍪 set cookie: ", input); }), }); export type AppRouter = typeof appRouter;
客户端执行代码(getServerSideProps/Jest)
const ssg = createProxySSGHelpers({ router: appRouter, ctx: await createContext(), transformer: superjson, }); const cookie = await ssg.getCookie.fetch("test"); // ✅ 正常工作 const result = await ssg.setCookie.fetch(cookie); // ❗ 执行失败
问题原因
createProxySSGHelpers是tRPC专为Query类型请求设计的工具,核心作用是预获取Query数据用于静态生成/服务端渲染,不支持处理Mutation类型的procedure。用它调用Mutation时,会默认查找对应路径下的Query方法,自然找不到匹配项,从而抛出错误。
解决方法
如果需要在服务端执行Mutation,直接调用Router的方法并传入上下文即可,无需通过SSG Helpers:
const ctx = await createContext(); const result = await appRouter.setCookie({ input: cookie }, ctx);
内容的提问来源于stack exchange,提问作者fotoflo
相关产品推荐
相关产品推荐

