SvelteKit + Prisma 多数据库连接报错:exports is not defined
解决Prisma多客户端导出时"exports is not defined"错误
问题根源
这个错误核心是模块系统不兼容:你的项目如果使用ES模块(ESM,package.json中含"type": "module"),但Prisma默认生成的客户端是CommonJS(CJS)格式,两种模块的导出/导入语法冲突,就会抛出exports is not defined。
解决方案
1. 配置Prisma生成ESM格式客户端
在你的两个schema文件(schema1.prisma和schema2.prisma)的generator块中,添加outputFormat = "esm",强制生成适配ESM的客户端:
// schema1.prisma generator client1 { provider = "prisma-client-js" output = "./generated/client1" outputFormat = "esm" // 新增该行 } datasource db1 { provider = "你的数据库类型" url = env("DATABASE_URL_1") }
// schema2.prisma generator client2 { provider = "prisma-client-js" output = "./generated/client2" outputFormat = "esm" // 新增该行 } datasource db2 { provider = "你的数据库类型" url = env("DATABASE_URL_2") }
2. 重新生成客户端
执行命令更新客户端文件:
prisma generate
3. 调整db.js的导入语法
如果项目是ESM,确保使用import语法导入客户端:
import { PrismaClient as PrismaClient1 } from './prisma/generated/client1/index.js'; import { PrismaClient as PrismaClient2 } from './prisma/generated/client2/index.js'; const db1 = new PrismaClient1(); const db2 = new PrismaClient2(); export { db1, db2 };
4. 清理缓存(可选)
若之前的缓存残留导致问题,执行以下步骤彻底清理:
- 删除
prisma/generated文件夹 - 删除
node_modules和package-lock.json/yarn.lock - 重新安装依赖:
npm install或yarn install - 再次执行
prisma generate
额外检查
- 确认package.json中的
"type": "module"配置正确(如果使用ESM) - 确保两个schema的
output路径无重叠,生成的客户端文件完整
内容的提问来源于stack exchange,提问作者cunnus
相关产品推荐
相关产品推荐

