Next.js 13.4 App Router中Middleware未执行问题求助
可能的原因及解决办法
未导出核心的middleware处理函数
你只提供了config配置,但Middleware要生效必须导出一个处理函数。比如:import { NextRequest } from 'next/server'; export function middleware(request: NextRequest) { // 可以先加日志验证是否执行 console.log('Middleware已触发:', request.url); // 这里写你的实际处理逻辑 } export const config = { matcher: '/api/:function*', };没有这个核心函数,哪怕配置写得再对也不会触发执行。
匹配器路径与实际请求不匹配
你的匹配器/api/:function*只会匹配/api/后带任意内容的路径(比如/api/get-list、/api/user/123),但不会匹配/api本身。如果你的请求是直接访问/api,需要调整匹配器:export const config = { matcher: ['/api', '/api/:function*'], };开发服务器未重启
修改Middleware或其配置后,Next.js的热重载可能不生效,必须手动停止并重启开发服务器,确保新配置被正确加载。Next.js版本过低
App Router对Middleware的稳定支持从Next.js 13.4版本开始,如果你的版本低于这个,大概率存在兼容性问题。可以运行npm list next查看版本,必要时升级到最新稳定版。文件位置错误
确认middleware.ts确实放在项目根目录的app/文件夹下(无src/结构的话,路径就是./app/middleware.ts),别放到pages/或者其他子目录里。
内容的提问来源于stack exchange,提问作者cryxnet
相关产品推荐
相关产品推荐

