Next.js Discord

Discord Forum

Next JS server Component fetch data when using clerk for authentication and Hono js For backend

Unanswered
British Shorthair posted this in #help-forum
Open in Discord
British ShorthairOP
export const revalidate = 0;

export default async function TaskPage({ searchParams }: Props) {
    const search = searchParamsSchema.parse(searchParams);
    const { getToken } = auth();

    const token = await getToken();
    console.log("πŸš€ ~ TaskPage ~ token:", token);
    const response = await client.api.tasks.$get({
        query: search,
        headers: { Authorization: `Bearer ${token}` },
    });

    console.log("πŸš€ ~ response headers:", response.headers);

    if (!response.ok) {
        throw new Error("Error fetching tasks");
    }

    const initialData = await response.json();

    return (
        <>
            <div className="h-full flex-1 flex-col space-y-8 p-8 md:flex">
                <TaskUi initialData={initialData} search={search} />
            </div>
        </>
    );
}

console in terminal:
πŸš€ ~ response headers: Headers {
  'x-clerk-auth-reason': 'dev-browser-missing',
  'x-clerk-auth-status': 'signed-out',
  'x-middleware-rewrite': '/api/tasks?page=1&per_page=10',
  'content-type': 'application/json; charset=UTF-8',
  date: 'Wed, 02 Oct 2024 06:46:45 GMT',
  connection: 'keep-alive',
  'keep-alive': 'timeout=5',
  'transfer-encoding': 'chunked'
}


backend code:
const app = new Hono()
    .use("*", clerkMiddleware())
    .get("/", async (ctx) => {
        const query = ctx.req.query();
        const parsedParams = getTasksSchema.safeParse(query);
        const auth = getAuth(ctx);

        if (!auth?.userId) {
            return ctx.json({ error: "Unauthorized" }, 401);
        }


facing error:
 β¨― Error: Error fetching tasks


can fetch data if I remove clerkMiddleware(), and userId check
console.log("πŸš€ ~ TaskPage ~ token:", token);
Also can fetch data with that token as bearer from postman

Why could not doing same in server component !!! help pls.

0 Replies