我正在用next js和trpc做一个应用程序,当我用trpc和trpc查询一个错误发生的原因时,客户端没有收到错误。
我的页面:
"use client"
import { useRouter, useSearchParams } from "next/navigation";
import { trpc } from "../_trpc/client";
import { Loader2 } from "lucide-react";
const Page = () => {
const router = useRouter()
const searchParams = useSearchParams()
const origin = searchParams.get("origin")
const { data: user, isLoading, isSuccess, error } = trpc.authCallback.useQuery(undefined, {
retry: true,
retryDelay: 500
})
console.log(error) // always returns null
return (
<div className="w-full mt-24 flex justify-center">
<div className="flex flex-col items-center gap-2">
<Loader2 className="h-8 w-8 animate-spin text-zinc-800" />
<h3 className="font-semibold text-xl">
Setting up your account...
</h3>
<p>
You will be redirected automaticly
</p>
</div>
</div>
);
}
export default Page;
字符串
TRPC代码:
import { createDbUser, getDbUser, getKindeUser } from '@/services/auth';
import { publicProcedure, router } from './trpc';
import { TRPCError } from '@trpc/server'
import { getKindeServerSession } from '@kinde-oss/kinde-auth-nextjs/server';
import { db } from '@/db';
export
const appRouter = router({
// query to get data
// mutation to modify data
authCallback: publicProcedure.query(async () => {
/// ...
throw new TRPCError({ code: 'UNAUTHORIZED' }) // throw this error to handle it on my page.tsx
/// ...
return { success: true }
})
});
// Export type router type signature,
// NOT the router itself.
export type AppRouter = typeof appRouter;
型
有谁知道为什么我在客户端没有收到错误?我已经尝试了onError,但似乎这个功能在新的trpc更新中被删除了。
当我在浏览器上调用这个“http://localhost:3000/api/trpc/call-back”时,我确实看到了错误。所以错误正在发送,但它没有到达客户端??
2条答案
按热度按时间sczxawaw1#
如果我的想法是正确的,你和我正在练习同一个项目,我遇到了同样的问题。
如果你有一个HTTP-405,那么你必须改变你导出的常量处理程序为->
字符串
9wbgstp72#
1.还要考虑将这些行添加到.gitignore文件中
字符串
这是因为使您的PrismaDB凭据立即无效,如果您注意到,您总是收到来自PlanetscaleDB的电子邮件,说它已被无效,所以如果是这种情况;
1.为PrismaDB创建新凭据并将更改推送到数据库
型
1.在转到/auth-callback路由之前在localhost上登录到服务器,因为此时没有现有用户可供使用。