Next.js 14.x中app/middleware.ts未触发问题求助
解决Next.js app/middleware.ts未触发的问题
给你几个实用的排查方向,按顺序试:
- 检查Next.js版本:app目录的中间件要求版本13.1及以上,执行
npm list next查看版本号,低于要求的话升级到最新稳定版。 - 确认文件位置:
middleware.ts必须放在app目录根下,不能嵌套在子文件夹里,位置不对的话框架根本不会识别这个中间件。 - 重启开发服务器:开发环境容易有缓存残留,关掉
next dev重新启动,很多时候缓存会导致新配置的中间件不生效。 - 简化匹配规则测试:先把
matcher改成'/about'试试能不能触发,排除复杂匹配规则的问题,确认生效后再改回'/about/:path*'。 - 排查冲突配置:看看
next.config.js里有没有rewrites或redirects规则,如果已经存在关于/about的重定向/重写,会优先于中间件执行,覆盖你的逻辑。 - 检查混合路由冲突:如果项目同时有
pages和app目录,要确保/about路由是由app目录处理的,而不是pages目录下的文件抢占了路由优先级。
还可以在middleware函数里加一行console.log('middleware triggered'),重启服务后访问/about,看终端有没有输出,能快速判断中间件是否被加载。
内容的提问来源于stack exchange,提问作者hkguile
相关产品推荐
相关产品推荐

