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

Next.js 12.3.1根目录middleware.js未生效问题求助

Next.js 12.3.1 Middleware 未生效排查方案

1. 核对文件命名与位置

  • 确保文件名是middleware.js(或.ts,需项目支持TypeScript),且放置在项目根目录;若项目使用src/目录结构,需将文件放在src/根目录下,而非外层项目根目录。
  • 避免误放至pages/、public/等子目录,这些位置不会触发Middleware。

2. 确认版本与依赖一致性

  • 执行npm list next或yarn list next,核对实际安装的Next.js版本是否为12.3.1,避免package.json声明与实际依赖不一致。

3. 用极简代码验证基础功能

替换现有Middleware代码为最简化版本,排除业务逻辑干扰:

export function middleware(request) {
  console.log('Middleware触发:', request.url);
  return Response.redirect(new URL('/test', request.url));
}

export const config = {
  matcher: '/:path*', // 匹配所有路径
};
  • 重启开发服务器,访问任意路径,观察终端是否打印日志、页面是否跳转到/test。若仍无反应,说明问题不在代码逻辑,需排查环境或配置。

4. 检查next.config.js配置

  • 确认未禁用Middleware:删除experimental中middleware: false的配置(若存在),确保Middleware功能开启。
  • 若配置了i18n,需保证matcher能覆盖国际化路由:
    示例i18n配置下,matcher需包含locale路径:
    export const config = {
      matcher: ['/:locale/:path*', '/:path*'],
    };
    

5. 排查next-i18next配置冲突

  • 暂时注释next-i18next.config.js中的配置内容,重启服务器测试Middleware是否生效。若生效,说明两者存在配置冲突,需逐步恢复配置定位问题点。

6. 清除开发缓存

Next.js开发服务器可能缓存旧代码,执行以下操作后重启:

rm -rf .next
npm run dev
  • 也可尝试构建生产环境测试(npm run build && npm run start),生产环境无开发缓存,结果更准确。

7. 检查路由规则冲突

  • 测试访问一个不存在的路径(如/random),确认是否触发Middleware。若存在同名页面路由(如pages/test.js),不影响重定向逻辑,但需确保路径匹配规则正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:35:18