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

NextJS 12.2.2版本中间件未触发,访问/test路径无重定向反而显示404页面求助

排查Next.js 12.2.2中间件不生效的问题

根据你的代码和描述,我整理了几个最可能导致中间件没触发、访问/test出现404的原因:

1. 未导入NextResponse核心模块

你的代码里调用了NextResponse.redirect(),但完全没有导入这个模块!这会直接导致运行时错误,中间件逻辑根本无法执行,自然不会触发重定向。

修复方法:在文件顶部添加导入语句:

import { NextResponse } from 'next/server'

2. 中间件文件路径放置错误

在Next.js 12版本中,中间件文件不能放在pages文件夹下,它必须存放在项目根目录(如果你的项目用了src结构,就放在src目录的根目录)。

你当前的路径是/myproject/pages/middleware.js,这不符合Next.js的中间件识别规则,系统不会把这个文件当作中间件处理。需要把middleware.js移动到/myproject/middleware.js位置。

3. 额外验证点(解决前两个问题后仍无效果时检查)

  • 重启开发服务器:修改中间件文件后,必须重启Next.js开发服务才能让变更生效,热重载对中间件不生效。
  • 检查matcher配置:如果你的/test是动态路由(比如/test/[id]),当前的['/test']只会精确匹配/test路径,若需要匹配所有以/test开头的路径,可改成['/test/:path*']。
  • 确认中间件是否启用:检查next.config.js中是否有experimental: { middleware: false }的配置,若有需改为true(12.2.2版本默认是启用状态,但旧配置可能残留)。

验证步骤

  1. 将middleware.js移动到项目根目录
  2. 添加上NextResponse的导入语句
  3. 重启开发服务器
  4. 再次访问/test,此时应该会自动重定向到/路径

内容的提问来源于stack exchange,提问作者strangeQuirks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:17:36