Electron 应用程序打包后 Prisma 无法工作

问题描述 投票:0回答:1

我一直在使用 electro.js、react、prisma、sqlite3 开发应用程序 我已使用此样板作为我的项目的开始

电子反应样板

该应用程序在开发模式下运行良好,但是当我将应用程序打包为可执行程序时,它不起作用。 我搜索了很多,发现问题是因为 prisma 我在 github 上发现了这个 issue ,其中有一个解决方案 comment 但我不明白如何在我的项目中使用它。

有谁知道如何使这个解决方案在我的项目中工作,或任何其他有效的解决方案?

sqlite electron prisma
1个回答
0
投票

如果没有有关您的应用程序的更多详细信息,很难给出精确的解决方案。例如,您的应用程序是否运行 Prisma 迁移,还是仅查询数据库?还可以尝试调试打包的应用程序以识别特定错误,这会让事情变得更清楚。

但是,根据 Prisma 与 Electron 结合使用时遇到的常见问题,以下是一些可能性和解决方案:

  1. 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”之外运行

  2. 打包应用程序中的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');
    
  3. 棱镜迁移

    在打包应用程序内运行 Prisma Migrations 如果您的应用程序需要运行 生产中的迁移,它需要 schema-engine-windows.exe, 默认情况下不处理。如果您必须包括迁移, 您需要手动将模式引擎包含在 extraResources 中 或者像查询引擎一样解压它。该项目可能会有所帮助: https://github.com/awohletz/electron-prisma-trpc-example/tree/main

© www.soinside.com 2019 - 2024. All rights reserved.