无法从@prisma/client导入BusinessTypeEnum枚举的问题求助
解决Deno环境下Prisma枚举导入错误的问题
问题分析
你遇到的错误是因为Deno环境下Prisma生成的客户端,枚举并非作为顶级导出存在,而是嵌套在Prisma命名空间对象中,直接解构导入会导致找不到对应导出项。
解决方案
修改你的导入和枚举使用方式:
1. 调整导入语句
将原来的导入代码:
import { Prisma, BusinessTypeEnum } from "@prisma/client";
改为仅导入Prisma命名空间:
import { Prisma } from "@prisma/client";
2. 使用命名空间内的枚举
在代码中通过Prisma.BusinessTypeEnum访问枚举:
async function createXxxx(convo: GrammyConversation, ctx: GrammyContext) { try { await ctx.replyWithChatAction("typing"); // 直接通过Prisma命名空间访问枚举 const bizTypes = Object.keys(Prisma.BusinessTypeEnum).map((o) => o); console.log({ bizTypes }); } catch (e) { const message = handleErrorMessage(e); await ctx.reply(message); } return; }
额外验证步骤
- 打开你生成的Prisma客户端文件
./prisma/generated/client/deno/edge.ts,确认枚举确实是定义在Prisma对象内部(搜索BusinessTypeEnum,会看到它是Prisma的属性)。 - 若修改后仍有问题,重新执行生成命令确保客户端更新:
npx prisma generate
为什么Node环境的写法不适用?
Node.js环境下Prisma客户端会将枚举作为顶级导出,但Deno版本的客户端为了适配模块系统,将所有类型和枚举统一封装在Prisma命名空间下,这是两者的核心差异。
内容的提问来源于stack exchange,提问作者Stephane
相关产品推荐
相关产品推荐

