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

Sveltekit中Prisma多Schema客户端配置问题求助

解决SvelteKit中多Prisma Schema客户端的两个核心问题

问题背景

在使用两个独立Prisma Schema(prisma/data/data.prisma、prisma/web/web.prisma)的SvelteKit项目中,遇到两个痛点:

  1. 客户端生成到node_modules时,每次npm install都会被删除,需手动重新生成
  2. 客户端生成到本地prisma目录时,SSR引入出现ReferenceError: exports is not defined错误

解决方案

1. 修复本地生成客户端的SSR模块兼容问题

Prisma默认生成CommonJS模块,而SvelteKit的SSR环境采用ES模块规范,直接引入会导致模块不兼容错误。只需修改Prisma生成配置,指定输出ES模块:

在每个Schema文件的generator块中添加outputFormat = "esm":

// prisma/web/web.prisma
generator client {
  provider = "prisma-client-js"
  output = "./client"
  outputFormat = "esm" // 关键配置:生成ES模块
}
// prisma/data/data.prisma
generator client {
  provider = "prisma-client-js"
  output = "./client"
  outputFormat = "esm"
}

重新执行生成命令:

prisma generate --schema ./prisma/web/web.prisma
prisma generate --schema ./prisma/data/data.prisma

之后在src/lib/prisma.js中按正确相对路径引入(注意要指向生成的index.js):

// src/lib/prisma.js
import { PrismaClient as WebClient } from '../../prisma/web/client/index.js'
export const web = new WebClient()

import { PrismaClient as DataClient } from '../../prisma/data/client/index.js'
export const data = new DataClient()

2. 避免npm install删除客户端的两种思路

思路A:将客户端生成到src目录下

把生成路径改到项目的src目录内(npm install不会改动src目录),配置示例:

generator client {
  provider = "prisma-client-js"
  output = "../../src/lib/prisma-clients/web"
  outputFormat = "esm"
}

引入路径更简洁:

import { PrismaClient as WebClient } from './prisma-clients/web/index.js'

思路B:添加postinstall脚本自动生成

如果坚持用node_modules路径,可在package.json中添加postinstall钩子,每次npm install后自动重新生成客户端:

{
  "scripts": {
    "prisma:generate:web": "prisma generate --schema ./prisma/web/web.prisma",
    "prisma:generate:data": "prisma generate --schema ./prisma/data/data.prisma",
    "prisma:generate": "npm run prisma:generate:web && npm run prisma:generate:data",
    "postinstall": "npm run prisma:generate"
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:13:21