如何将 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 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Electron 下使用 Prisma 的 SQL

将 Stripe webhook 与 graphql-yoga 和 Prisma 一起使用

如何将 React Router 与 Electron 一起使用?

如何将 Babel 与 Electron 一起使用?

如何将 Material UI 与 Electron React 样板一起使用?

如何将第三方二进制文件与 Electron 捆绑在一起?