我在 NextJS 项目上有一个 API 端点,需要超过 60 秒才能运行。我使用的是 Pro Vercel 计划,但由于某种原因无法增加超时限制。
在端点本身我已经尝试过
export const maxDuration = 300
export const dynamic = 'force-dynamic'
这似乎没有做任何事情,我还尝试在顶层(在
vercel.json
之上)添加一个/src
文件,如下所示:
{
"functions": {
"pages/api/**": {
"memory": 3008,
"maxDuration": 300
},
}
}
这又不起作用了。我梳理了文档(主要是here)以及一些线程(一个示例),但没有一个有帮助。
我正在运行 NextJs 版本
13.5.6
,我绝对是专业计划,并且 Node v18,我做错了什么?我真的不确定还能尝试什么。
您所做的似乎是 Pags Router 方式和 App Router 方式的混合。尝试像下面的示例一样进行操作:
使用页面路由器 (
/pages/api/my-function/handler.ts
):
export const config = {
maxDuration: 5, // 5 seconds
};
export default function handler(
request: NextApiRequest,
response: NextApiResponse,
) {
response.status(200).json({});
}
使用应用程序路由器 (
/app/api/my-function/route.ts
):
export const maxDuration = 5; // 5 seconds
export const dynamic = 'force-dynamic';
export function GET(request: Request) {
return new Response('{}', { status: 200 });
}
如果您想在使用 Vercel 时覆盖整个项目的函数的最大持续时间,您可以在
vercel.json
中完成(我认为这仅对 App Router 有效):
{
"functions": {
"app/api/**/*": {
"maxDuration": 5
}
}
}
您可以在官方文档上阅读有关这一切的更多信息。