nestjs + prisma를 vercel에 deploy하기

Rhseung·2025년 7월 16일
0
{
  "scripts": {
    "vercel-build": "prisma generate && prisma migrate deploy && nest build"
  }
}

package.jsonvercel-build를 추가하면 알아서 deploy시 실행한다.


{
  "builds": [
    {
      "src": "src/main.ts",
      "use": "@vercel/node"
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "src/main.ts",
      "methods": ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"]
    }
  ]
}

{projectRoot}/vercel.json에 위와 같이 추가한다.


generator client {
  provider = "prisma-client-js"
  output   = "./generated/client"
}

공식 문서에 따르면 output을 명시하는 것을 강력히 권장한다곤 하나, 이렇게 하면 prisma를 import할 때,

import { PrismaClient } from './generated/prisma';

@Injectable()
export class PostsService {
  private prisma = new PrismaClient();
}

위와 같이 path가 되는데, prisma project를 cli로 만들 때 자동으로 .gitignore/generated/prisma를 추가하기 때문에 이러면 vercel에서 deploy할 때 알 수 없다고 에러가 발생하게 된다.

따라서, output을 제거하여 기본값인 node_modules/@prisma/client 내에 prisma client를 generate되게 하여

import { PrismaClient } from '@prisma/client';

@Injectable()
export class PostsService {
  private prisma = new PrismaClient();
}

위와 같은 코드로 만들어줄 경우, npm i @prisma/client를 통해 dependencies에 추가해준다면, deploy시 에러가 나지 않는다.


vercel에서 environment variable에 .env 파일에 있는 DATABASE_URL를 추가해줘야한다.


참고: https://www.prisma.io/docs/orm/prisma-client/deployment/serverless/deploy-to-vercel

0개의 댓글