如何解决 "已经有10个Prisma客户端在运行 "的错误?

408 阅读1分钟

我在我的Next.js应用程序中使用Prisma,但我做错了。

我在每个页面中都初始化了一个新的PrismaClient对象。

import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()

在应用的使用过程中,经过一段时间后,我收到了错误信息Already 10 Prisma Clients are actively running ,还有一个Address already in use

为了解决这个问题,我把这个Prisma初始化导出到一个单独的文件,lib/prisma.js

import { PrismaClient } from '@prisma/client'

let prisma

if (process.env.NODE_ENV === 'production') {
  prisma = new PrismaClient()
} else {
  if (!global.prisma) {
    global.prisma = new PrismaClient()
  }
  prisma = global.prisma
}

export default prisma

进行生产检查是因为在开发中,npm run dev 在运行时清除Node.js的缓存,由于热重载,这导致每次都要进行新的PrismaClient 初始化,所以我们不会解决这个问题。

我把这段代码从www.prisma.io/docs/suppor…

最后我在我的页面中导入了导出的prisma 对象。

import prisma from 'lib/prisma'