Localhost:3000 说:使用 uploadthing dropbox 时无法运行中间件

问题描述 投票:0回答:1

我遇到了一个似乎无法解决的问题。我可以解决此文件中的错误的唯一方法如下:

import { authMiddleware } from '@clerk/nextjs/server';
import { NextResponse } from 'next/server';

export default authMiddleware(
    (auth, req) => {
    //rewrite for domains
    const url = req.nextUrl;
    const searchParams = url.searchParams.toString();
    let hostname = req.headers;

    const pathWithSearchParams = `${url.pathname}${searchParams.length > 0 ? `?${searchParams}` : ''}`;

    //if subdomain exists
    const customSubDomain = hostname.get('host')?.split(`${process.env.NEXT_PUBLIC_DOMAIN}`).filter(Boolean)[0];

    if (customSubDomain) {
        return NextResponse.rewrite(new URL(`/${customSubDomain}${pathWithSearchParams}`, req.url));
    }

    if (url.pathname === '/sign-in' || url.pathname === '/sign-up') {
      return NextResponse.redirect(new URL(`/agency/sign-in`, req.url));
    }

    if ( url.pathname === '/' || (url.pathname === '/site' && url.host === process.env.NEXT_PUBLIC_DOMAIN)) {
      return NextResponse.rewrite(new URL('/site', req.url));
    }

    if (url.pathname.startsWith('/agency') || url.pathname.startsWith('/subaccount')) {
      return NextResponse.rewrite(new URL(`${pathWithSearchParams}`, req.url));
    }
  })
export const config = {
    matcher: ['/((?!.+\\.[\\w]+$|_next).*)', '/', '/(api|trpc)(.*)'],
  }

但是当我尝试使用 uploadthing dropbox 上传文件时,出现以下错误:


 ℹ UPLOADTHING 9:06:21 AM  UploadThing dev server is now running!
 ⨯ UPLOADTHING 9:06:21 AM  [
 ⨯ UPLOADTHING 9:06:21 AM      "An error occured in your middleware function",
 ⨯ UPLOADTHING 9:06:21 AM      {
 ⨯ UPLOADTHING 9:06:21 AM          "message": "Failed to run middleware",
 ⨯ UPLOADTHING 9:06:21 AM          "_tag": "UploadThingError",
 ⨯ UPLOADTHING 9:06:21 AM          "name": "UploadThingError",
 ⨯ UPLOADTHING 9:06:21 AM          "code": "INTERNAL_SERVER_ERROR",
 ⨯ UPLOADTHING 9:06:21 AM          "cause": {}
 ⨯ UPLOADTHING 9:06:21 AM      }
 ⨯ UPLOADTHING 9:06:21 AM  ]
 ⨯ UPLOADTHING 9:06:21 AM  Failed to run middleware

有什么想法可以解决这个问题吗?我已经尝试了最新版本的 @clerk/nextjs 以及 clerkMiddleware,但我似乎无法解决这个问题。

我觉得我已经尝试了一切,请帮助我。 预先感谢!

typescript next.js file-upload middleware saas
1个回答
0
投票

首先,他们弃用了 authMiddleware,他们希望您使用 clerkMiddleware,正如他们在文档中所说:https://clerk.com/docs/references/nextjs/auth-middleware

还将您的逻辑包装到 try catch 块中,以便我们可以详细了解错误。 我可以建议您确保 req.headers 和 req.nextUrl 不为空或未定义,您可以使用 req.headers.get 来获取对象内的主机名,而不是引用标头对象。

© www.soinside.com 2019 - 2024. All rights reserved.