我可以在 next.js 中间件中访问动态路由名称吗?

sea*_*unt 6 javascript middleware reactjs next.js

我有一条路线在/:username.

在我的_middleware.ts文件中我想做这样的事情

export function middleware(req: NextRequest) {
  const isDynamicRoute = req.nextUrl.pathname === "/[username]";
  
  if (isDynamicRoute) {
    return undefined
  }

  // handle other routes...
}
Run Code Online (Sandbox Code Playgroud)

问题是我似乎无法在中间件中访问这个动态路由名称。我看到/test的是路径名而不是/[username].

当我登录时,request我看到了我正在寻找的内容,但它位于一个[Symbol(internal request)]键内(以及一个包含真实路径名的单独符号键)。是否可以在中间件文件中可靠地访问该值?或者我需要处理这个逻辑吗_app.ts?(见下面的日志)

  [Symbol(internal request)]: {
    credentials: 'same-origin',
    headers: BaseHeaders [Headers] { [Symbol(map)]: [Object] },
    method: 'GET',
    referrer: 'about:client',
    redirect: 'follow',
    url: NextURL {
      href: '/test',
      origin: '',
      protocol: '',
      username: '',
      password: '',
      host: '',
      hostname: '',
      port: '',
      pathname: '/test',
      search: '',
      searchParams: URLSearchParams {},
      hash: ''
    }
  },
  [Symbol(internal request)]: {
    cookieParser: [Function: cookieParser],
    geo: {},
    ip: undefined,
    page: { name: '/[username]', params: [Object] },
    url: NextURL {
      href: '/test',
      origin: '',
      protocol: '',
      username: '',
      password: '',
      host: '',
      hostname: '',
      port: '',
      pathname: '/test',
      search: '',
      searchParams: URLSearchParams {},
      hash: ''
    }
  }
Run Code Online (Sandbox Code Playgroud)