/

如何修復 `Already 10 Prisma Clients are actively running` 錯誤

如何修復 Already 10 Prisma Clients are actively running 錯誤

我在我的 Next.js 應用中使用 Prisma,但是我做錯了。

我在每個頁面都初始化了一個新的 PrismaClient 對象:

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

但是在應用使用一段時間後,我收到了錯誤訊息 Already 10 Prisma Clients are actively runningAddress already in use

為了解決這個問題,我將 Prisma 初始化的程式碼抽取到一個單獨的文件 lib/prisma.js 中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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,所以我們無法解決這個問題。

我從 https://www.prisma.io/docs/support/help-articles/nextjs-prisma-client-dev-practices 上取得了這段程式碼。

最後,我在我的頁面中導入了導出的 prisma 對象:

1
import prisma from 'lib/prisma'

tags: [“Prisma”, “Next.js”, “error”, “fix”]