在生产中用 Next.js 实例化 PrismaClient

Instantiating PrismaClient with Next.js in production

Prisma 文档建议如下实例化 Prisma Client 以避免臭名昭著的 Already 10 Prisma Clients are actively running 问题;

import { PrismaClient } from '@prisma/client'

declare global {
  // allow global `var` declarations
  // eslint-disable-next-line no-var
  var prisma: PrismaClient | undefined
}

export const prisma =
  global.prisma ||
  new PrismaClient({
    log: ['query'],
  })

if (process.env.NODE_ENV !== 'production') global.prisma = prisma

它在开发环境中运行正常。我需要问的是,我需要这个 process.env.NODE_ENV !== 'production' 检查吗?我应该在生产中以不同方式实例化 Prisma Client 吗?

保留支票没有坏处。您的 NODE_ENV 将投入生产,因此条件不匹配,PrismaClient 将不会分配给 global 变量。

生产环境中不会进行热重载,因此无需重复使用相同的 PrismaClient