【发布时间】:2021-08-29 21:10:09
【问题描述】:
我正在使用 Electron 和 Prisma(以及其他我们不必担心的)制作项目。我已经尝试解决这个错误好几个小时了:我无法让 Prisma 找到查询引擎可执行文件,我已经尝试了我在互联网上找到的 一堆 东西,但仍然没有.
我尝试设置 Prisma 将在哪里找到查询引擎,我找到了这个 repo the "solution",但它不起作用(至少对我来说不是):
这是我的 Prisma 架构:
datasource db {
provider = "sqlite"
url = "file:./data.db"
}
generator client {
provider = "prisma-client-js"
binaryTargets = ["native"]
output = "../electron/database/generated/client"
}
我使用 webpack 来编译 Electron 和 React,所以我将 schema generate 设置为 Electron 文件夹,然后 webpack 将编译到“dist”文件夹。我使用copy-webpack-plugin 复制 schema.prisma 和 query-engine-windows.exe(这是我的操作系统)。毕竟我得到了这个错误:
r [PrismaClientKnownRequestError]: spawn C:\Users\Tiago Oliveira\programming\web-dev\electron-prisma-react-ts-passwordkeeper\packages\win-unpacked\resources\app.asar.unpacked\dist\query-engine-windows.exe ENOENT
at C:\Users\Tiago Oliveira\programming\web-dev\electron-prisma-react-ts-passwordkeeper\packages\win-unpacked\resources\app.asar\dist\main.js:69:77852
at c (C:\Users\Tiago Oliveira\programming\web-dev\electron-prisma-react-ts-passwordkeeper\packages\win-unpacked\resources\app.asar\dist\main.js:1:54711)
at Generator._invoke (C:\Users\Tiago Oliveira\programming\web-dev\electron-prisma-react-ts-passwordkeeper\packages\win-unpacked\resources\app.asar\dist\main.js:1:54464)
at Generator.throw (C:\Users\Tiago Oliveira\programming\web-dev\electron-prisma-react-ts-passwordkeeper\packages\win-unpacked\resources\app.asar\dist\main.js:1:55070)
at asyncGeneratorStep (C:\Users\Tiago Oliveira\programming\web-dev\electron-prisma-react-ts-passwordkeeper\packages\win-unpacked\resources\app.asar\dist\main.js:1:195068)
at s (C:\Users\Tiago Oliveira\programming\web-dev\electron-prisma-react-ts-passwordkeeper\packages\win-unpacked\resources\app.asar\dist\main.js:1:195340)
at processTicksAndRejections (internal/process/task_queues.js:93:5) {
code: 'ENOENT',
clientVersion: '2.24.1',
meta: undefined
}
事件使用此设置来获取应用程序路径并将路径设置在 qe(查询引擎)所在的位置,它说它不存在...?
import { app } from "electron"
import path from "path"
const qePath = path.join(
app.getAppPath().replace("app.asar", "app.asar.unpacked"),
"dist/query-engine-windows.exe"
)
const prisma = new PrismaClient(process.env.NODE_ENV === "production" ? {
__internal: {
engine: {
binaryPath: qePath
}
}
} : {})
为了确保我没有发疯,我沿着它所说的不存在的路径将它扔到控制台然后它就跑了!所以这里有问题。
如果您对文件的外观有任何疑问,可以通过this project repo 查询。
如果你想得到错误并尝试自己得到错误,只需克隆 repo 并执行 yarn 并运行“yarn package:exe”m,它将编译主文件夹,即 Electron,然后是 src React 文件夹,然后它会为 Electron 捆绑它,然后立即执行它:yarn package:exe will webpack-(all)>electron->execute.
【问题讨论】:
-
请阅读meta.stackoverflow.com/questions/303812/…,其中讨论了为什么格式化文本比代码截图更可取。
-
这方面有什么更新吗?我也遇到了同样的问题。
-
还没有,很遗憾
标签: webpack electron electron-builder prisma