みかづきブログ・カスタム

基本的にはちょちょいのほいです。

ローカルで動作するNext.jsのAPIをVercel(Hobbyプラン)にデプロイすると動かなくなったので、Proプランに切り替えた 💻

いままで、あまりAPIを作ってこなかったので知りませんでしたが、Hobbyプランだと、 Serverless Functionは10秒でタイムアウト するようです。

vercel.com

ソースコード

src/app/api/develop/route.ts
import { NextResponse } from 'next/server';

export async function GET(request: Request) {
  const { searchParams } = new URL(request.url);
  const delay = Number(searchParams.get('delay') || 0);

  await new Promise(resolve => setTimeout(resolve, delay));

  return NextResponse.json({
    message: 'Hello!',
    delay,
  });
}

DEMO

https://vercel-api-prototype.vercel.app/api/develop?delay=0

パラメータでdelayを調整できます。

https://vercel-api-prototype.vercel.app/api/develop?delay=10000

10秒以上のdelayを設置すると504となります。

This Serverless Function has timed out.

Your connection is working correctly.

Vercel is working correctly.

504: GATEWAY_TIMEOUT
Code: FUNCTION_INVOCATION_TIMEOUT

VercelのプランをProにすると、60秒まではタイムアウトしなくなるので、Vercel上で処理に時間がかかるAPIを実行したい場合は、プランを上げる検討をしましょう。