TypeError: Cannot read properties of undefined (reading 'delete')
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
export default function middleware(
request: NextRequest,
response: NextResponse
) {
const requestHeaders = new Headers(request.headers);
requestHeaders.set("x-next-pathname", request.nextUrl.pathname);
const currentUser = request.cookies.get("user");
const authRoutes = ["/login", "/sign-up", "/verify-email"];
if (!currentUser && !authRoutes.includes(request.nextUrl.pathname)) {
response.cookies.delete("accessToken");
response.cookies.delete("refreshToken");
response.cookies.delete("user");
const url = request.nextUrl.clone();
url.pathname = "/login";
return NextResponse.redirect(url, {
headers: requestHeaders,
});
}
if (currentUser && authRoutes.includes(request.nextUrl.pathname)) {
const url = request.nextUrl.clone();
url.pathname = "/";
return NextResponse.redirect(url, {
headers: requestHeaders,
});
}
const refreshToken = request.cookies.get("refreshToken")?.value;
const parsedRefreshToken = JSON.parse(refreshToken || "{}");
if (
currentUser &&
refreshToken &&
new Date(parsedRefreshToken.expiresIn) < new Date()
) {
response.cookies.delete("accessToken");
response.cookies.delete("refreshToken");
response.cookies.delete("user");
const url = request.nextUrl.clone();
url.pathname = "/login";
return NextResponse.redirect(url, {
headers: requestHeaders,
});
}
return NextResponse.next({
request: {
headers: requestHeaders,
},
});
}
export const config = {
matcher: ["/((?!api|_next/static|_next/image|favicon.ico|.\.png).)"],
};