You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js集成Clerk与Sanity时访问/studio触发Clerk中间件错误

解决Clerk检测不到middleware的问题(Next.js 15 + Sanity Studio)

针对你访问/studio路由时出现的Clerk auth()错误,以下是几个可行的排查和解决步骤:

1. 显式将/studio路由加入Middleware匹配规则

虽然当前matcher理论上覆盖/studio,但显式添加可确保路由被Clerk Middleware处理。修改src/middleware.ts的config.matcher:

export const config = {
  matcher: [
    // 显式匹配Sanity Studio路由
    "/studio(.*)",
    // 保留原有规则
    "/((?!_next|[^?]*\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)",
    "/(api|trpc)(.*)",
  ],
};

2. 确认Sanity Studio页面的组件类型

如果Sanity Studio页面是服务器组件,调用auth()时需要确保Middleware已完成认证传递。可尝试将Studio页面改为客户端组件:

// app/studio/[[...index]].tsx
'use client';

import { NextStudio } from 'next-sanity/studio';
import config from '@/sanity.config';

export default function StudioPage() {
  return <NextStudio config={config} />;
}

3. 更新Clerk依赖到兼容Next.js 15的版本

Next.js 15属于较新版本,旧版Clerk可能存在兼容性问题,执行更新命令:

pnpm update @clerk/nextjs

4. 强制重启开发服务器

Next.js的Middleware有时不会热重载生效,完全关闭开发服务器后重新启动:

pnpm dev --clear-cache

5. 排查重复的Middleware文件

确保项目根目录(非src文件夹下)没有另一个middleware.ts或middleware.js文件,避免规则冲突。


内容的提问来源于stack exchange,提问作者skywalkerSam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 11:45:02