You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:10:28