Next.js应用部署Vercel后API请求返回504超时问题求助
Vercel部署Next.js后API接口504超时问题排查方案
检查API路由的外部依赖超时
你的API如果调用了外部数据库、第三方服务,Vercel的Serverless/边缘函数默认超时时间较短(Serverless函数最多10秒,边缘函数更短)。本地网络延迟低能正常运行,但Vercel服务器到外部服务的延迟可能更高,直接触发超时。
解决:给外部请求加超时控制,比如用axios的timeout参数设为5秒以内,或者改用Vercel同区域的数据库实例来降低延迟。检查API路由的代码逻辑阻塞
本地机器资源充足,代码里的同步循环、大量数据处理在Vercel的Serverless环境下可能因为资源限制变慢,最终超时。
解决:把同步阻塞逻辑改成异步并行处理,比如用Promise.all批量操作;优化数据查询,给数据库加索引、减少接口返回的数据量。调整Vercel函数配置
默认的Serverless函数内存和超时设置可能不够,你可以在项目根目录创建vercel.json文件,修改配置:{ "functions": { "api/**/*.js": { "memory": 1024, "maxDuration": 30 } } }注意:
maxDuration最大只能设30秒,超过这个时间Vercel还是会触发超时,所以核心还是要优化代码逻辑。查看Vercel函数日志
登录Vercel控制台,找到对应项目的函数日志,里面会显示API函数执行的详细过程,能看到是在哪一步卡住导致超时,精准定位问题。排除CORS配置问题(虽然Postman不受影响,但可以确认)
在API路由里手动设置CORS头,避免潜在的跨域问题干扰:export default function handler(req, res) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); // 其他业务逻辑 }
内容的提问来源于stack exchange,提问作者Muhammad Hossain
相关产品推荐
相关产品推荐

