我正在try 将用户重定向到基于角色的特定页面,方法是使用midleware.ts文件中的以下代码
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
import { getToken } from 'next-auth/jwt'
export async function middleware(request: NextRequest) {
const token = await getToken({
req: request,
secret: process.env.JWT_SECRET
}) as any
if (token !== null && token.user.role === "admin") {
if (request.nextUrl.pathname.startsWith('/admin')) {
return NextResponse.next()
}
else {
return NextResponse.redirect(new URL('/admin', request.url))
}
}
}
/* export const config = {
matcher: [
// "/login",
// "/register",
// "/",
// "/admin"
],
} */
根据我从文档中了解到的信息,它将在所有路由上运行,但我收到以下错误:
未捕获语法错误:意外标记‘<;
但是,如果我将匹配器包含在中间件文件中,它将按预期工作:
export const config = {
matcher: [
"/login",
"/register",
"/",
"/admin"
],
}
有没有解决这个错误的办法?或者只是将所有页面添加到匹配器数组中?