Vercel Hobby计划下Next.js/Trpc项目配置maxDuration仍10秒超时求助
问题排查与解决方案
1. 配置位置错误
你将export const maxDuration = 55;放在了Trpc的router定义文件中,但Vercel只会识别API路由入口文件中的函数配置,而非Trpc的路由逻辑文件。
需要将配置移到对应API路由的入口文件:
- 若使用Pages Router,文件路径为
pages/api/trpc/[trpc].ts - 若使用App Router,文件路径为
app/api/trpc/[trpc]/route.ts
示例(App Router):
// app/api/trpc/[trpc]/route.ts export const maxDuration = 55; // 必须放在文件最顶部 import { fetchRequestHandler } from '@trpc/server/adapters/fetch'; import { appRouter } from '@/server/router'; const handler = (req: Request) => fetchRequestHandler({ endpoint: '/api/trpc', req, router: appRouter, createContext: () => ({}), }); export { handler as GET, handler as POST };
2. Vercel.json 配置冲突或路径错误
如果同时使用了vercel.json配置,需确保:
- 文件放在项目根目录
- 路径完全匹配你的API路由文件位置
- 配置内容正确
示例:
{ "functions": { "app/api/trpc/[trpc]/route.ts": { "maxDuration": 55 } } }
注意:vercel.json的配置优先级高于文件内的maxDuration,若两者存在冲突,以配置文件为准。
3. OpenAI API 调用优化
即使延长超时时间,OpenAI API的响应速度也会影响最终结果,建议:
- 使用
stream: true开启流式响应,减少整体等待时长 - 优先选择响应更快的模型(如
gpt-3.5-turbo替代gpt-4) - 精简prompt内容,减少模型处理逻辑
4. 部署缓存问题
Vercel可能缓存旧的部署版本,导致新配置未生效:
- 重新部署时勾选「Redeploy with cache cleared」
- 前往Vercel控制台的函数详情页,在「Settings」中确认
maxDuration已更新为55秒
内容的提问来源于stack exchange,提问作者Ash Gharibyan
相关产品推荐
相关产品推荐

