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

使用UploadThing Dropbox时Clerk中间件运行失败求助

解决方案:修复Clerk中间件与UploadThing的冲突问题

你的问题出在中间件拦截了UploadThing的API请求,而UploadThing的内部请求上下文不满足中间件里的校验逻辑(比如缺少预期的host头或nextUrl属性),导致抛出错误中断上传流程。以下是两种可行的修复方案:

方案1:排除UploadThing的API路径(推荐)

修改中间件的matcher配置,让中间件跳过UploadThing的请求路径,这样UploadThing的请求不会进入你的中间件逻辑:

export const config = {
    matcher: [
        '/((?!.+\\.[\\w]+$|_next|api/uploadthing).*)', 
        '/', 
        '/(api|trpc)(.*)'
    ],
};

方案2:优化错误处理逻辑

如果需要让中间件继续处理其他API路径,可在catch块中针对UploadThing的请求做特殊处理,直接放行而非返回错误:

catch (error) {
    console.error('Error in authMiddleware:', error.message);
    // 针对UploadThing请求直接放行
    if (req.nextUrl?.pathname.startsWith('/api/uploadthing')) {
        return NextResponse.next();
    }
    return NextResponse.error();
}

额外建议

可以在中间件的校验逻辑中增加更宽松的容错处理,比如对hostname不存在的情况不直接抛出错误,而是默认使用环境变量中的域名,避免非核心请求被中断:

const hostname = req.headers.get('host') || process.env.NEXT_PUBLIC_DOMAIN;
// 移除原有的hostname不存在时的抛错逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:46:10