Next.js部署Vercel后dashboard/users路由SSR请求504错误求助
排查Vercel部署Next.js SSR路由504错误的方案
1. 确认请求对应的运行时类型
/_next/data/[build-id]/dashboard/users.json是Next.js为SSR/ISR路由生成的数据接口,是否属于Edge函数取决于你的路由配置:
- 检查
app/dashboard/users/page.js/tsx(App Router)或pages/dashboard/users.js/tsx(Pages Router)中是否包含:
存在该配置则为Edge函数,否则默认使用Vercel Serverless(Node.js)运行时。export const runtime = 'edge';
2. 排查超时核心原因(本地正常、部署异常的常见诱因)
504是请求超时错误,说明服务器端处理逻辑耗时超过Vercel运行时的默认时间限制(10秒),本地正常意味着部署后依赖的外部资源或环境存在差异:
- 外部资源访问限制:
本地开发时可能直接访问内网数据库/API,部署后Vercel函数需通过公网访问,需确认:- 你的数据库/API服务商防火墙是否允许Vercel函数的IP段访问(可在Vercel官方文档查询其函数服务的IP范围)
- 替换资源端点为公网可访问地址,避免使用localhost、内网IP
- 路由逻辑性能问题:
检查SSR数据获取逻辑(getServerSideProps或App Router中的异步页面函数):- 是否存在大量数据查询、循环计算等耗时操作,尝试分页获取数据、减少单次请求的数据量
- 是否遗漏
await关键字导致异步操作阻塞,或存在未处理的Promise等待
- 查看Vercel函数日志:
登录Vercel控制台进入项目,点击Functions菜单,找到对应路由的函数(Edge或Serverless),查看执行日志,日志会显示超时前的具体执行环节或错误信息,直接定位问题点
3. 临时验证方案
- 简化路由逻辑:注释掉所有外部资源请求,返回模拟静态数据,重新部署测试。如果不再出现504,说明问题出在外部资源访问或数据处理逻辑
- 切换运行时:若当前使用Edge Runtime,删除
export const runtime = 'edge'配置,改用默认Node.js Runtime部署测试,排除Edge环境的特殊限制
内容的提问来源于stack exchange,提问作者Alexandre29
相关产品推荐
相关产品推荐

