我在我的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'