NextJS getServerSideProps在AWS Amplify中执行异常:并非每次触发
检查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

