NextJS中间件似乎未被触发

hxzsmxv2  于 2023-01-30  发布在  其他
关注(0)|答案(2)|浏览(129)

我在/myproject/pages/middleware.js中有middleware.js文件:

export function middleware(request) {
  console.log(1);
  return NextResponse.redirect(new URL('/', request.url));
}

// See "Matching Paths" below to learn more
export const config = {
  matcher: ['/test'],
};

现在我所期望的是当我进入/test页面时,它应该会将我重定向到/。然而,什么也没有发生,我看到了我的标准404页面。
知道为什么吗?
下一版本:12.2.2

byqmnocz

byqmnocz1#

NextJS的最新版本要求用户在根文件夹上有一个中间件。
请尝试{root}/middleware.js,而不是{root}/pages/_middleware.js

rhfm7lfc

rhfm7lfc2#

对于下一个13.0.2 / 13.0.1(如果您正在使用appDir):真(实验)
如果您想使用中间件:
1.把middleware.ts放入根项目中:(与“应用程序”文件夹的层次结构相同,不在应用程序文件夹内...)
1.确保tsconfig包含:[...,“中间件.ts”]
1.创建空的“页面”文件夹。(基于issue
1.将命中每个请求:

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

export function middleware(request: NextRequest ) {
    console.log('lol!!!')
}

export const config = {
  matcher: '/',
}

相关问题