我一直在使用 electro.js、react、prisma、sqlite3 开发应用程序 我已使用此样板作为我的项目的开始
该应用程序在开发模式下运行良好,但是当我将应用程序打包为可执行程序时,它不起作用。 我搜索了很多,发现问题是因为 prisma 我在 github 上发现了这个 issue ,其中有一个解决方案 comment 但我不明白如何在我的项目中使用它。
有谁知道如何使这个解决方案在我的项目中工作,或任何其他有效的解决方案?
如果没有有关您的应用程序的更多详细信息,很难给出精确的解决方案。例如,您的应用程序是否运行 Prisma 迁移,还是仅查询数据库?还可以尝试调试打包的应用程序以识别特定错误,这会让事情变得更清楚。
但是,根据 Prisma 与 Electron 结合使用时遇到的常见问题,以下是一些可能性和解决方案:
Prisma 引擎:
Prisma 使用二进制引擎(query_engine-windows.dll.node 查询和 schema-engine-windows.exe 用于迁移)。这些 二进制文件无法在打包的 app.asar 文件中运行,这就是为什么 开发中一切正常,但打包后失败。
对于 Windows,您可以在里面找到这些引擎 节点模块/@prisma/engines
但是既然你正在使用 Electron React Boilerplate,它已经 包括解压 Prisma 查询引擎二进制文件的配置。 检查你的 package.json 是否有这个配置:
"build": {
"asarUnpack": "**\\*.{node,dll}",
}
这将确保查询引擎被正确提取并且可以 在“app.asar”之外运行
打包应用程序中的sqlite数据库文件路径:
在开发中,你的数据库文件是可以直接访问的,但是之后 包装,路径改变。
使用“process.resourcesPath”定位压缩包中的数据库文件 应用程序。并尝试将您的数据库添加到 Electron 中的 extraResources 构建配置:
"build": {
"extraResources": [
{
"from": "path-to-your-database-file",
"to": "app/db"
}
]
}
然后,你就可以用类似的方式访问它:
const path = require('path');
const dbPath = path.join(process.resourcesPath, 'database.sqlite');
棱镜迁移
在打包应用程序内运行 Prisma Migrations 如果您的应用程序需要运行 生产中的迁移,它需要 schema-engine-windows.exe, 默认情况下不处理。如果您必须包括迁移, 您需要手动将模式引擎包含在 extraResources 中 或者像查询引擎一样解压它。该项目可能会有所帮助: https://github.com/awohletz/electron-prisma-trpc-example/tree/main