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

NextJS getServerSideProps在AWS Amplify中执行异常:并非每次触发

Next.js 13.1.6 Amplify部署后getServerSideProps偶发不执行问题排查方案
  • 检查Amplify缓存策略
    快速切换页面触发缓存是常见诱因,Amplify默认可能对页面设置了缓存规则,导致getServerSideProps被跳过。进入Amplify控制台的App Settings > Rewrites and redirects,确认目标页面的缓存规则;再到Performance > Cache settings,确保该页面的Cache-Control设置为no-cache, no-store, must-revalidate,强制每次请求都触发服务器端逻辑。

  • 禁用Next.js路由预取
    Next.js的Link组件默认开启预取,快速切换时可能复用预取的无props页面。给所有跳转目标页面的Link加上prefetch={false}属性:

    <Link href="/target-page" prefetch={false}>跳转</Link>
    

    同时检查使用useRouter做跳转的逻辑,确认没有跳过服务器端渲染的自定义处理。

  • 清理Amplify构建缓存并重新部署
    Amplify的构建缓存可能残留旧版本配置,导致版本切换不生效。在Amplify控制台的Build settings里,找到Build cache选项手动清理,之后重新触发构建部署。同时确认amplify.yml中的构建命令为next build,且NODE_ENV设置为production。

  • 强制添加全链路日志
    由于Amplify日志仅记录正常情况,在getServerSideProps中添加强制日志输出,确保执行情况能被CloudWatch捕获:

    export async function getServerSideProps(context) {
      console.error(`[SSR] getServerSideProps triggered: ${context.resolvedUrl}`);
      return {
        props: { fixedData: "test-value" }
      };
    }
    

    部署后查看CloudWatch日志,快速切换页面时如果看不到这条日志,说明函数确实未执行;如果能看到,问题可能出在页面组件接收props的逻辑上。

  • 验证Next.js版本兼容性
    Next.js 13.1.x系列存在部分路由缓存的已知bug,尝试升级到13.2.x或降级到13.0.x的稳定版本,同时确保Amplify使用的Node.js版本与Next.js要求匹配(13.1.6推荐Node.js 16.14+)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:17:22