【问题标题】:Middleware is not updating location in Next.Js中间件未更新 Next.Js 中的位置
【发布时间】:2022-07-20 08:42:12
【问题描述】:

所以我正在尝试在中间件中进行重定向,它工作正常,但没有更新 浏览器位置

代码:

export function middleware(req, ev) {
  if (signedinPages.find((url) => url === req.nextUrl.pathname)) {
    console.log("cookies", req.cookies);
    if (!req.cookies.token) {
      const url = req.nextUrl.clone();
      url.pathname = "/Login";
      return NextResponse.rewrite(url);
    }
  }
}

【问题讨论】:

  • 重写不会改变浏览器的 URL。你想要的是一个重定向。
  • 是的 redirect() 工作正常

标签: next.js middleware


【解决方案1】:

使用此代码

export function middleware(req, ev) {
  if (signedinPages.find((url) => url === req.nextUrl.pathname)) {
    if (!req.cookies.token) {
      const url = req.nextUrl.clone();
      console.log(url)
      url.pathname = "/Login";
      url.search = "";
      return NextResponse.redirect(url);
    }
  }
}

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

在 nextjs 的早期版本中,或者说 @latest ,_middleware 不再工作,请尝试在页面外添加 /middleware.js 它会正常工作

【讨论】:

    猜你喜欢
    • 2013-06-10
    • 2020-07-20
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2020-06-25
    相关资源
    最近更新 更多