You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Node.js全局对象使用Prisma触发的TypeScript TS7017报错

报错产生原因

TypeScript默认没有在globalThis(也就是代码中用到的global对象)的类型定义里添加prisma属性,开启strict模式时,TS不允许访问未声明类型的对象属性,所以会抛出TS7017隐式any类型错误。直接关闭strict会丢失大量类型校验能力,确实不推荐。

正确修复方法

步骤1:添加全局类型声明

在项目根目录下新建prisma.d.ts类型声明文件,写入以下内容:

import { PrismaClient } from '@prisma/client'

declare global {
  // 注意必须用var声明,才能正确挂载到globalThis类型上
  var prisma: PrismaClient | undefined
}

如果项目有专门的@types文件夹,也可以把这个声明文件放在@types目录下,只要确保tsconfig.json的include配置能覆盖到这个文件即可。


步骤2:优化原有代码逻辑

添加完类型声明后,原来的代码就不会再触发类型错误了,还可以把原有代码简化为官方推荐的写法:

import { PrismaClient } from '@prisma/client';

const prisma = global.prisma ?? new PrismaClient();

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

export default prisma;

这种写法可以避免开发环境热重载时反复创建PrismaClient实例,导致数据库连接数被耗尽的问题。

内容的提问来源于stack exchange,提问作者Alejandro Zapien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:54:02