在AWS Amplify部署NextJS动态路由项目的页面更新问题求助
Next.js + AWS Amplify 动态路由更新问题求助
问题背景
我把Next.js项目部署在AWS Amplify上,遇到内容无法正常提供给用户的问题:项目通过getStaticProps()和getStaticPaths()生成学生信息的动态路由,构建时会从数据库拉取所有学生ID生成对应页面。但构建完成后如果新增学生,Amplify不会自动重建静态页面,导致新学生的页面路径(数据库中已存在ID)因为不在初始构建的路径列表里,无法被访问。
现有路由代码
export async function getStaticPaths() { const studentIds = await getAllStudentIds(); const paths = studentIds.map((studentId) => { // 每个对象必须包含params键,且内部有id键(因为文件名用了[id]) return { params: { id: studentId, }, }; }); return { paths, fallback: false, }; } export async function getStaticProps({ params }) { const studentDataObject = await getStudentInformation(params.id); // 转换为可序列化的数据类型返回 const studentData = JSON.stringify(studentDataObject); return { props: { studentData, }, }; }
已尝试的方案及遇到的问题
- 设置
fallback: true:按照Next.js文档,这是解决这类问题的简单方案,但部署到Amplify Hosting时构建失败,提示该特性不被支持 - 设置
fallback: "blocking":本地运行完全正常,但在Amplify Hosting环境中访问页面时出现500错误 - 临时 workaround:改用查询字符串路由,在客户端直接获取学生信息,但未来业务需要支持构建后可动态更新的路由,所以需要更合适的解决方案
我已经试过Amplify GitHub仓库讨论区里的部分方法,但都无效(比如设置
fallback: "blocking"后仍出现500错误)
需求
希望找到可行的解决方案,实现构建完成后新增学生时,对应的动态路由可以正常访问,无需手动触发全量构建。
内容的提问来源于stack exchange,提问作者Ramon Orraca
相关产品推荐
相关产品推荐

