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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:22:12