NextJS 13中的中间件无法正常工作

balp4ylt  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(305)

我有以下中间件。我说过当URL为"/contact""/admin""/about"时,中间件必须运行。但当我转到/http://localhost:3000时,中间件将触发。它必须在URL为"/contact""/admin""/about"时触发。
为什么?

import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'

export function middleware (request: NextRequest) {
  console.log(`Runs for '/contact' or '/admin' or 'about'`)
}

export const config = {
  matcher: ['/contact', '/admin','/about']
}

我的页面文件夹的结构

    • 一米八米一x**
    • 注:**
    • 它适用于开发,但不适用于生产**
bfnvny8b

bfnvny8b1#

确保middleware.js文件与next-13中的package.json位于同一级别。之前,它位于pages目录中,名称为_middleware.js
你可以试试看这个是否有效。

export async function middleware(req, ev) {
  // showing the related code for your issue
  const { pathname } = req.nextUrl;

  if (pathname.includes("/contact") || pathname.includes("/admin")) {
    // for those routes add your logic
  }
}

相关问题