Next.js/Clerk集成错误:极简TypeScript(src目录)下auth()无法工作
解决Clerk + Next.js/TypeScript服务器错误
错误信息
[ Server ] Error: Clerk: auth() was called but Clerk can't detect usage of clerkMiddleware(). Please ensure the following:
- clerkMiddleware() is used in your Next.js Middleware.
- Your Middleware matcher is configured to match this route or page.
- If you are using the src directory, make sure the Middleware file is inside of it.
排查修复步骤
- 确认
middleware.ts文件放置在src目录的根路径下,不能嵌套在子文件夹中,Next.js会自动识别该位置的Middleware文件。 - 检查
middleware.ts的代码是否正确实现了clerkMiddleware,示例代码如下:
import { clerkMiddleware } from '@clerk/nextjs/server'; export default clerkMiddleware(); export const config = { matcher: [ // 匹配所有非静态资源及非Next.js内部路由 '/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)', // 可添加具体路由确保覆盖调用auth()的页面 '/your-target-route', ], };
- 验证
matcher配置是否包含你调用auth()的目标路由,确保该路由能被Middleware匹配到。 - 重启Next.js开发服务器,避免文件变动未触发Middleware更新导致的问题。
内容的提问来源于stack exchange,提问作者mike
相关产品推荐
相关产品推荐

