You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13项目中Middleware未触发,访问/test路径报404求助

Next.js 13 Middleware 无响应及404问题解决步骤

1. 确认Middleware的正确位置

Next.js 13(App Router)要求Middleware文件必须命名为middleware.ts/middleware.js,且放在项目根目录(和app、public文件夹同级),放在app或test子文件夹里完全不会被框架识别,自然无响应。

2. 配置正确的路径匹配规则

如果你的Middleware只需要拦截/test路径,要在文件末尾添加matcher配置,确保请求能被命中:

export const config = {
  matcher: ['/test/:path*'], // 匹配/test及所有子路径
};

如果不写matcher,默认会拦截所有路径,但明确配置能避免不必要的拦截。

3. 修正响应返回的代码写法

要返回JSON响应,必须用Next.js提供的NextResponse.json()方法,示例代码如下:

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

export function middleware(request: NextRequest) {
  // 仅对/test路径返回指定JSON
  if (request.nextUrl.pathname.startsWith('/test')) {
    return NextResponse.json({ message: 'hello there' });
  }
  // 其他路径正常放行
  return NextResponse.next();
}

export const config = {
  matcher: ['/test/:path*'],
};

不要用Express风格的res.send()或其他非Next.js原生响应方法,否则不会生效。

4. 重启开发服务器

修改Middleware文件或调整位置后,必须重启npm run dev,Next.js的开发服务器不会自动热重载Middleware的配置变更。

5. 排查404问题

如果按上述步骤调整后仍返回404,大概率是之前的Middleware完全没触发(位置/文件名错误)。只要Middleware正确拦截请求,会直接返回你定义的JSON,不会走到页面路由的404逻辑。

内容的提问来源于stack exchange,提问作者Q-man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 10:02:40