如何将 Prisma 与 Electron 一起使用
Posted
技术标签:
【中文标题】如何将 Prisma 与 Electron 一起使用【英文标题】:How to use Prisma with Electron 【发布时间】:2021-01-13 05:23:57 【问题描述】:我正在使用带有 Electron + Angular 应用程序的 Prisma (sqlite DB)
在我尝试创建记录之前一切正常
I'm getting this error in console few times repeated
这是我的 schema.prisma 文件的一部分:
datasource db
provider = "sqlite"
url = env("DATABASE_URL")
generator client
provider = "prisma-client-js"
binaryTargets = ["native","darwin","debian-openssl-1.1.x","linux-musl"]
我尝试在一个临时 TS 项目中使用相同的 Prisma 配置,它工作正常
当我尝试使用电子时,我遇到了错误
据我了解,它无法找到查询引擎二进制文件,但我不知道如何告诉 Electron 从何处获取它们
【问题讨论】:
*如有必要,可以添加任何其他代码 您是否在前端执行查询? Prisma 目前仅支持 Node,因此您需要在 Electron 的主进程中编写查询。 【参考方案1】:嗨
我也有类似的棱镜问题。
问题是自定义 prisma 客户端以及下载的用于平台的二进制文件生成在 node_modules/.prisma
文件夹(默认)中。
当 webpack 打包代码时,.prisma
文件夹不包含在 node_modules
文件夹中生成的 app.asar 包中,因此无法与二进制文件一起加载 prisma 客户端。
解决方案
我按照prisma doc更改了生成的prisma客户端的输出路径
generator client
provider = "prisma-client-js"
output = "../src/main/database/generated/client"
并包含在我的database.js
文件中(位于database
文件夹内),如下所示
import PrismaClient from './generated/client';
由于下载的二进制文件也放在output
文件夹内,prisma客户端找到它没有问题。
【讨论】:
【参考方案2】:我在使用electron-builder
构建本机二进制文件时遇到了同样的问题。
在我的情况下,我必须将 .env
文件添加到 package.json
上的构建块,并将 output
路径更改为提到的 spc。
// package.json
...
"build":
...
"files": [
...
".env"
],
...
// schema.prisma
generator client
provider = "prisma-client-js"
output = "../electron/client"
binaryTargets = ["native"]
【讨论】:
以上是关于如何将 Prisma 与 Electron 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
将 Stripe webhook 与 graphql-yoga 和 Prisma 一起使用
如何将 React Router 与 Electron 一起使用?