如何在TypeScript中扩展globalThis/global类型以适配PrismaClient?
解决方法
步骤1:添加全局类型声明
在你的项目根目录下新建一个类型声明文件,比如命名为 prisma.d.ts,写入以下内容:
import { PrismaClient } from '@prisma/client'; declare global { var prisma: PrismaClient | undefined; }
注意:这里必须用
var声明,用let或者const无法挂载到globalThis上,会导致声明不生效。
步骤2:确认TypeScript配置识别声明文件
打开你的tsconfig.json,检查include数组是否包含了你刚才创建的声明文件路径,比如下面的配置就会自动识别根目录下所有.d.ts文件:
{ "compilerOptions": { // 其余原有配置保持不变 }, "include": ["**/*.ts", "**/*.tsx", "prisma.d.ts"] }
步骤3:原代码可正常运行
全局类型声明生效后,你原本的代码中global.prisma调用就会自动匹配PrismaClient类型,不会再抛出ts(7017)错误。开发环境下热重载时也会复用同一个Prisma实例,避免多次初始化连接导致的数据库连接耗尽问题。
内容的提问来源于stack exchange,提问作者Forgotten-Storm
相关产品推荐
相关产品推荐

