How can i have multiple middlewares run for the same route?
Answered
Arboreal ant posted this in #help-forum
Arboreal antOP
So i want to have multiple middlewares, i tried this
export async function middleware(request) {
if (1 == 1) {
const requestHeaders = new Headers(request.headers);
requestHeaders.set("my-url", request.url);
return NextResponse.next({
request: {
headers: requestHeaders,
},
});
}
if (pathname.startsWith("/dashboard")) {
return NextResponse.redirect(console.log(new URL("/", request.url)))
}
} but i can't have return since the rest of the middlewares wont run since sometimes 2 middlewares have to run for the same route.Answered by Ray
in this case, just run redirect first
export async function middleware(request) {
if (pathname.startsWith("/dashboard")) {
return NextResponse.redirect(new URL("/", request.url))
}
if (1 == 1) {
const requestHeaders = new Headers(request.headers);
requestHeaders.set("my-url", request.url);
return NextResponse.next({
request: {
headers: requestHeaders,
},
});
}
}9 Replies
@Arboreal ant So i want to have multiple middlewares, i tried this js
export async function middleware(request) {
if (1 == 1) {
const requestHeaders = new Headers(request.headers);
requestHeaders.set("my-url", request.url);
return NextResponse.next({
request: {
headers: requestHeaders,
},
});
}
if (pathname.startsWith("/dashboard")) {
return NextResponse.redirect(console.log(new URL("/", request.url)))
}
}
but i can't have return since the rest of the middlewares wont run since sometimes 2 middlewares have to run for the same route.
in this case, just run redirect first
export async function middleware(request) {
if (pathname.startsWith("/dashboard")) {
return NextResponse.redirect(new URL("/", request.url))
}
if (1 == 1) {
const requestHeaders = new Headers(request.headers);
requestHeaders.set("my-url", request.url);
return NextResponse.next({
request: {
headers: requestHeaders,
},
});
}
}Answer
@Arboreal ant but will the 2nd one run?
it will when it visit to "/"
@Ray it will when it visit to "/"
Arboreal antOP
so its not possible to run 2 middlewares for the /dashboard route?
@Arboreal ant so its not possible to run 2 middlewares for the /dashboard route?
I don't think its possible from your code example
you are redirecting away
if (!loggedIn && pathname.startsWith("/dashboard")) {
return NextResponse.redirect(new URL("/", request.url))
} else if (pathname.startsWith("/dashboard")) {
// I think this is what you want?
}@Arboreal ant so its not possible to run 2 middlewares for the /dashboard route?
btw, does 14.2 fix the mysql2 issue?
@Ray btw, does 14.2 fix the mysql2 issue?
Arboreal antOP
yes it did fix it