You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt-electron-prisma打包后提示找不到.prisma/client模块如何解决

解决方案

第一步:还原Prisma默认配置

先撤销之前对Prisma Client输出路径的自定义修改,还原schema.prisma的generator配置为默认值:

generator client {
  provider = "prisma-client-js"
}

同时还原Electron主进程background.js里的引入语句:

const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()

第二步:配置主进程Webpack跳过打包Prisma依赖

你遇到的Cannot find module '_http_common'错误,核心原因是Nuxtron默认会用Webpack打包主进程代码,而Prisma Client属于Node原生依赖,不允许被Webpack打包处理,需要标记为外部依赖跳过打包:
找到项目根目录下Nuxtron的主进程Webpack配置文件(默认路径为build/webpack.main.config.js,如果不存在可手动新建),添加如下externals配置:

module.exports = {
  // 其他原有配置保持不变
  externals: ['@prisma/client', '.prisma/client']
}

第三步:修正electron-builder打包配置

修改你的electron-builder.yml配置,新增asarUnpack字段确保Prisma的二进制引擎文件能被正确解压,同时修正files字段的包含规则:

appId: com.example.app
productName: nuxt-electron-prisma
copyright: Copyright © 2021
nsis: 
  oneClick: false
  perMachine: true
  allowToChangeInstallationDirectory: true

directories:
  output: dist
  buildResources: resources
# 新增:指定不需要打包进asar的文件,Prisma二进制引擎必须解压才能正常运行
asarUnpack:
  - "node_modules/@prisma/engines/**"
  - "node_modules/.prisma/**"
files:
  - "resources/**"
  - "node_modules/@prisma/client/**"
  - "node_modules/@prisma/engines/**"
  - "node_modules/.prisma/**"
  - from: .
    filter:
      - package.json
      - app
publish: null

第四步:调整打包执行流程

每次执行打包前需要先运行prisma generate生成最新的Prisma Client代码,修改package.json的build脚本:

"scripts": {
  "dev": "nuxtron",
  "build": "prisma generate && nuxtron build"
}

额外注意事项

  • 如果使用Sqlite数据库,运行时需要通过app.getPath('userData')等Electron API动态获取数据库路径,不要写死相对路径,避免打包后找不到数据库文件
  • 确认@prisma/client放在dependencies依赖项下,不要移动到devDependencies,你当前的配置是正确的无需修改

内容的提问来源于stack exchange,提问作者Mojtaba Barari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:36:00