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

NextJS ISR页面在AWS Amplify返回404,本地运行正常

问题描述

我在AWS Amplify上测试一个Next.js应用,本地运行完全正常,包括Incremental Static Regeneration(ISR)页面在内的所有页面都能正常加载。执行npm run build时,ISR页面显示已生成,且能在.next/static/chunks/pages/...目录下找到这些页面文件。但部署到Amplify后,ISR页面返回404错误。

相关配置:

  • getStaticPaths() 设置了 fallback: false
  • getStaticProps() 设置了 revalidate: 1

CloudWatch记录的错误日志:

[x-amplify-log][INFO] app response status_code=404 Not Found
headers=x-nextjs-matched-path: /blog/page/[page_index],
x-powered-by: redacted (7), etag: "zelzrux0qt2i9",
content-type: text/html; charset=utf-8,
vary: Accept-Encoding, content-encoding: gzip,
date: Mon, 08 May 2023 13:25:32 GMT, connection: keep-alive,
keep-alive: redacted (9), transfer-encoding: chunked,
x-amplify-internal-request-id: d4c3b5ff-56a0-4bf4-b4c6-3d1116ced0e1,
x-amplify-internal-metrics: CustomerServerReadinessCheck;dur=533,
RuntimeTotal;dur=978, RuntimeInitialization;dur=543,
CustomerServerCall;dur=429

仓库参考:bradtraversy/next-markdown-blog


可能的原因及解决方案
  • 版本兼容性不匹配
    Amplify部署时默认使用的Node.js或Next.js版本可能和本地开发环境不一致,ISR特性在不同版本中存在差异。检查Amplify构建配置中的Node.js版本,确保和本地一致;同时确认package.json里的Next.js版本被明确指定,避免Amplify自动拉取不兼容的版本。

  • 重写规则未正确配置
    Amplify的默认路由规则可能无法识别Next.js的动态ISR页面。可以在项目根目录创建amplify.yml文件,添加正确的重写配置:

    version: 1
    frontend:
      phases:
        build:
          commands:
            - npm run build
      artifacts:
        baseDirectory: .next
        files:
          - '**/*'
      cache:
        paths:
          - node_modules/**/*
      rewriteRules:
        - source: /<*>
          target: /index.html
          status: 200
    

    也可以直接在Amplify控制台的「重写和重定向」模块添加该规则,让所有请求都指向index.html,由Next.js处理路由匹配。

  • 静态文件部署不完整
    检查Amplify构建日志,确认.next/static/chunks/pages/下的ISR页面文件被正确上传到部署目录。如果存在文件缺失,可能是amplify.yml中的artifacts配置错误,确保files字段包含**/*以覆盖所有静态资源。

  • getStaticPaths()路径格式错误
    确认getStaticPaths()返回的paths数组格式正确,比如针对/blog/page/[page_index],生成的路径应为/blog/page/1、/blog/page/2这类具体路径。本地构建后查看.next/server/pages/blog/page/目录,确认对应页码的HTML文件已生成,路径格式无偏差。

  • Amplify缓存干扰
    Amplify可能缓存了旧的路由配置,导致新部署的ISR页面无法被识别。手动在Amplify控制台清除缓存后重新部署;同时检查revalidate参数是否被正确处理,避免Amplify的全局缓存阻止页面的增量更新。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:40:21