Next.js 14+TypeScript集成Clerk时clerkMiddleware导出报错求助
解决步骤
更新全部Clerk相关依赖
你仅更新了clerk核心包,但@clerk/nextjs这个Next.js适配包也需要同步更新到最新版本,执行对应包管理器的命令:# npm npm install @clerk/nextjs@latest clerk@latest # yarn yarn add @clerk/nextjs@latest clerk@latest # pnpm pnpm add @clerk/nextjs@latest clerk@latest修正middleware.ts代码
新版本中clerkMiddleware的导入路径为@clerk/nextjs,且受保护路由的配置方式改为结合createRouteMatcher实现,替换原有代码为:import { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs'; // 自定义需要鉴权保护的路由规则,按需修改 const isProtectedRoute = createRouteMatcher(['/dashboard(.*)', '/profile(.*)']); export default clerkMiddleware((auth, req) => { // 对匹配到的受保护路由执行鉴权校验 if (isProtectedRoute(req)) { auth().protect(); } }); export const config = { matcher: ["/((?!.+\\.[\\w]+$|_next).*)", "/", "/(api|trpc)(.*)"], };重启开发服务验证
保存代码后重启npm run dev,TypeScript的导出错误即可消除。
错误原因说明
- 未同步更新
@clerk/nextjs适配包,仅更新核心clerk包会导致适配包版本过低,缺失clerkMiddleware导出; - 导入路径错误:
clerkMiddleware属于@clerk/nextjs包的导出,而非@clerk/nextjs/server。
内容的提问来源于stack exchange,提问作者Chanpreet kaur
相关产品推荐
相关产品推荐

