Clerk authMiddleware配置publicRoutes未登录时报错求助
问题解决方法
首先翻译错误信息:
Clerk错误:publicRoutes数组中包含的路由("/")已被matcher匹配,这会导致循环。请将其从publicRoutes中移除,或调整你的matcher配置。
问题根源在于你的matcher配置重复包含了"/"路由,和publicRoutes的设置产生冲突。原matcher里的第一个规则'/((?!.+\.[\w]+$|_next).*)'已经能匹配包括"/"在内的所有非静态资源、非_next路径的路由,无需再单独添加"/"到matcher数组中。
修改后的middleware.ts代码如下:
import { authMiddleware } from "@clerk/nextjs"; export default authMiddleware({ // "/" 对所有用户开放访问 publicRoutes: ["/"] }); export const config = { matcher: ['/((?!.+\.[\w]+$|_next).*)', '/(api|trpc)(.*)'], };
这样修改后,既保留了首页无需登录即可访问的设置,又避免了路由匹配冲突导致的报错。
内容的提问来源于stack exchange,提问作者Ebenezer Zergabachew
相关产品推荐
相关产品推荐

