如何将 Prisma 与 Electron 结合使用

v0r*_*t3x 8 sqlite angularjs typescript electron prisma

我正在使用 Prisma (sqlite DB) 和 Electron + Angular 应用程序

一切正常,直到我尝试创建记录

我在控制台中多次重复收到此错误

这是我的 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"]
  }
Run Code Online (Sandbox Code Playgroud)

我尝试过在临时 TS 项目中使用相同的 Prisma 配置,效果很好

当我用电子尝试时,我遇到了错误

据我了解,它找不到查询引擎二进制文件,但我不知道如何对 Electron 说从哪里获取它们

小智 7

你好

我对 prisma 也有类似的问题。

  1. 问题是自定义 prisma 客户端以及下载的适用平台的二进制文件在node_modules/.prisma文件夹中生成(默认)。

  2. 当 webpack 捆绑代码时,.prisma文件夹未包含在node_modules文件夹中生成的 app.asar 包中,因此 prisma 客户端无法与二进制文件一起加载。

解决方案

我根据prisma 文档更改了生成的 prisma 客户端的输出路径

generator client {
  provider = "prisma-client-js"
  output   = "../src/main/database/generated/client"
}
Run Code Online (Sandbox Code Playgroud)

并包含在我的database.js文件(位于database文件夹内)中,如下所示

import { PrismaClient } from './generated/client';
Run Code Online (Sandbox Code Playgroud)

由于下载的二进制文件也放置在该output文件夹内,因此 prisma 客户端找到它没有问题。