CSS doen not loads after adding clerk.
Unanswered
Cuvier’s Dwarf Caiman posted this in #help-forum
Cuvier’s Dwarf CaimanOP
I have added clerk authentication and built custom sign-in and sign-up pages,
After loading it for first time, it works fine but if i logs into my app and then logout again or directly redirect to sign-in, sign-up pages
only html loads, no css. all layouts are disturbed?
i cannot figure this out
sharing some code snippets
After loading it for first time, it works fine but if i logs into my app and then logout again or directly redirect to sign-in, sign-up pages
only html loads, no css. all layouts are disturbed?
i cannot figure this out
sharing some code snippets
3 Replies
Cuvier’s Dwarf CaimanOP
middleware.ts
import { clerkMiddleware, createRouteMatcher } from "@clerk/nextjs/server";
import { NextResponse } from "next/server";
const isProtectedRoute = createRouteMatcher(["/dashboard", "/api", "/home"]);
export default clerkMiddleware((auth, req) => {
// if (isProtectedRoute(req)) auth().protect();
if (isProtectedRoute(req)) {
const { userId } = auth();
if (!userId) {
const signInUrl = new URL("/sign-in", req.url);
signInUrl.searchParams.set("redirect_url", encodeURIComponent(req.url));
return NextResponse.redirect(signInUrl);
}
}
});
export const config = {
matcher: ["/((?!.*\\..*|_next).*)", "/", "/(api|trpc)(.*)"],
};@lib/providers/clerk
import { ClerkProvider } from "@clerk/nextjs";
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return <ClerkProvider>{children}</ClerkProvider>;
}@lib/provider/reactQuery
app/layout.tsx
'use client'
import {
QueryClientProvider,
QueryClient,
isServer,
} from "@tanstack/react-query";
function makeQueryClient() {
return new QueryClient({
defaultOptions: {
queries: {
// With SSR, we usually want to set some default staleTime
// above 0 to avoid refetching immediately on the client
staleTime: 60 * 1000,
},
},
});
}
let browserQueryClient: QueryClient | undefined = undefined;
function getQueryClient() {
if (isServer) {
// Server: always make a new query client
return makeQueryClient();
} else {
// Browser: make a new query client if we don't already have one
// This is very important, so we don't re-make a new client if React
// suspends during the initial render. This may not be needed if we
// have a suspense boundary BELOW the creation of the query client
if (!browserQueryClient) browserQueryClient = makeQueryClient();
return browserQueryClient;
}
}
export default function ReactQueryProvider({
children,
}: {
children: React.ReactNode;
}) {
const queryClient = getQueryClient();
return (
<QueryClientProvider client={queryClient}>{children}</QueryClientProvider>
);
}app/layout.tsx
import type { Metadata } from "next";
import "./globals.css";
import Providers from "@/lib/providers";
import { Toaster } from "sonner";
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<Providers>
{children}
<Toaster />
</Providers>
);
}