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

Next.js 13中间件本地正常,部署至AWS Amplify后未执行求助

AWS Amplify部署后Next.js Middleware未执行的排查与解决步骤

以下是针对你遇到问题的具体排查和解决方向,都是实际部署中常见的坑:

  • 确认Amplify对Next.js Middleware的版本支持
    Amplify对Next.js Middleware的支持从Next.js 12.x版本开始,先检查项目的package.json里Next.js版本是否≥12。同时确保Amplify构建配置里的build命令是标准的next build,避免自定义命令导致Middleware未被编译。

  • 核对Middleware文件的位置与命名
    必须确保middleware.ts/middleware.js放在项目根目录或src/根目录下(如果用了src目录结构),绝对不能放在pages/文件夹内。Amplify严格遵循Next.js的官方文件结构规范,位置错误直接导致Middleware不被加载。

  • 验证pathExtension逻辑的环境兼容性
    本地和Amplify部署环境的路径解析可能存在差异,比如Amplify的CDN会给静态资源添加前缀。可以在Middleware中加入日志输出:

    console.log('Middleware triggered for path:', request.nextUrl.pathname);
    console.log('Path extension:', path.extname(request.nextUrl.pathname));
    

    然后去Amplify控制台的构建日志或CloudWatch日志里查看输出,确认路径判断逻辑是否和本地一致,有没有出现预期外的路径格式。

  • 检查Amplify的重写/重定向规则
    进入Amplify控制台→你的应用→App settings→Rewrites and redirects,确认没有自定义规则提前拦截了需要Middleware处理的请求。默认的Next.js重写规则应该是:

    Source: </[.]+$|.(?!(css|gif|ico|jpg|js|png|svg|txt|map|json)$)([^.]+$)/>, Target: /index.html, Type: 200
    如果添加了自定义规则,确保不会覆盖Middleware的处理路径。

  • 清理Amplify构建缓存重新构建
    Amplify的缓存可能残留旧的构建产物,导致Middleware未更新。可以在构建设置里勾选"Disable cache"重新构建,或者在amplify.yml中添加清理步骤:

    build:
      commands:
        - rm -rf .next
        - npm run build
    
  • 查看Amplify的运行日志
    进入Amplify控制台→你的应用→Build→点击最近的构建记录,查看"Build logs"和"Deploy logs",搜索"middleware"关键词:

    • 如果完全没有Middleware相关日志,说明文件未被识别,回到文件位置和命名的排查;
    • 如果有日志但逻辑未执行,说明路径判断或业务逻辑存在环境差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:03:17