electron-app在构建exe

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

在此项目中添加了其他依赖性:VUE,parwindcss和prisma.

在不断应有的工作中,我发行了

npm run make

prisma不再起作用了。我收到了消息
Cannot find module './prisma/client

在互联网上有一些解决方案,并在某个地方添加了此部分:

  '**/*', 
  'node_modules/@prisma/client/**/*',  
  'node_modules/.prisma/**/*', 

但是我不确定在哪里添加这些行。我试图将它们添加到我的packag.json下方的“构建” - 部分,也试图将它们添加到Froge.config.js中。但是什么都没有用 - 现在,该应用程序甚至不再启动了...
希望这里有人可以帮助我。
我的包裹是我的包裹。

{ "name": "invoice-manager", "productName": "Invoice Manager", "version": "1.0.0", "description": "", "main": ".vite/build/main.js", "scripts": { "start": "electron-forge start", "package": "electron-forge package", "make": "electron-forge make", "publish": "electron-forge publish", "lint": "echo \"No linting configured\"" }, "devDependencies": { "@electron-forge/cli": "^7.6.1", "@electron-forge/maker-deb": "^7.6.1", "@electron-forge/maker-rpm": "^7.6.1", "@electron-forge/maker-squirrel": "^7.6.1", "@electron-forge/maker-zip": "^7.6.1", "@electron-forge/plugin-auto-unpack-natives": "^7.6.1", "@electron-forge/plugin-fuses": "^7.6.1", "@electron-forge/plugin-vite": "^7.6.1", "@electron/fuses": "^1.8.0", "@vitejs/plugin-vue": "^5.2.1", "autoprefixer": "^10.4.20", "electron": "34.1.1", "postcss": "^8.5.2", "prisma": "^6.3.1", "tailwindcss": "^3.4.17", "vite": "^5.4.14" }, "keywords": [], "author": { "name": "Dennis" }, "license": "MIT", "dependencies": { "@aws-sdk/client-s3": "^3.744.0", "@aws-sdk/lib-storage": "^3.744.0", "@prisma/client": "^6.3.1", "prisma": "^6.3.1", "angular-expressions": "^1.4.3", "docxtemplater": "^3.60.0", "dotenv": "^16.4.7", "electron-squirrel-startup": "^1.0.1", "electron-store": "^10.0.1", "flowbite": "^3.1.2", "flowbite-vue": "^0.1.7", "pinia": "^2.3.1", "pizzip": "^3.1.8", "vue": "^3.5.13", "vue-router": "^4.5.0" } }

在这里forge.config.json:

const { FusesPlugin } = require('@electron-forge/plugin-fuses'); const { FuseV1Options, FuseVersion } = require('@electron/fuses'); module.exports = { packagerConfig: { asar: false, }, rebuildConfig: {}, makers: [ { name: '@electron-forge/maker-squirrel', config: {}, }, { name: '@electron-forge/maker-zip', platforms: ['darwin'], }, { name: '@electron-forge/maker-deb', config: {}, }, { name: '@electron-forge/maker-rpm', config: {}, }, ], plugins: [ { name: '@electron-forge/plugin-vite', config: { // `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc. // If you are familiar with Vite configuration, it will look really familiar. build: [ { // `entry` is just an alias for `build.lib.entry` in the corresponding file of `config`. entry: 'src/main.js', config: 'vite.main.config.mjs', target: 'main', }, { entry: 'src/preload.js', config: 'vite.preload.config.mjs', target: 'preload', }, ], renderer: [ { name: 'main_window', config: 'vite.renderer.config.mjs', }, ], }, }, // Fuses are used to enable/disable various Electron functionality // at package time, before code signing the application new FusesPlugin({ version: FuseVersion.V1, [FuseV1Options.RunAsNode]: false, [FuseV1Options.EnableCookieEncryption]: true, [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, [FuseV1Options.EnableNodeCliInspectArguments]: false, [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, [FuseV1Options.OnlyLoadAppFromAsar]: true, }), ], };

除了

asar: false

的所有东西都来自Inital npx command。

在这里我的prisma.scheme:

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

datasource db {
  provider = "sqlite"
  url      = env("DATABASE_URL")
}

问题,您能有任何想法吗?预先感谢!

	

Hello我以前对此感到不安,因为没有官方指南可以专门与Electron-Forge进行此操作。我的依赖性与您的依赖关系相同。因此,这是我为使它在产品中工作和开发的工作所做的:


forge.config.js

中,您需要声明您的Prisma文件,以及来自.Node模块的生成的Prisma客户端。这样可以确保生产构建将专门将所有Prisma文件复制到
out/myproject/resources
文件夹。

packagerConfig: { asar: true, // prisma extra resources must be declared here extraResource: [ "./prisma/app.db", "./node_modules/.prisma", "./node_modules/@prisma" ] }
vue.js electron prisma forge
1个回答
0
投票
在我的方法中,我决定包括开发数据库,因此我不必在client insters insters

期间进行配置如何配置如何运行

npm exec prisma migrate dev
  1. in
    webpack.rules.js
    将您的Prisma添加到排除规则中。这将防止WebPack包装您的Prisma文件并在
    .webpack/
期间处于开发模式时创建新的DB。
npm run start

创建您的Prisma客户端时,请确保在生产过程中检查并使用位于UserData中的DB文件,这是我为Helpers所做的工作

    { test: /[/\\]node_modules[/\\].+\.(m?js|node)$/, parser: { amd: false }, // https://github.com/prisma/prisma/issues/12627 // fix for prisma with electron exclude: /\.prisma/, use: { loader: '@vercel/webpack-asset-relocator-loader', options: { outputAssetBase: 'native_modules', }, }, },
  1. 我的参考文献:
    如何在电子中使用Electron-Forge添加电子生产中的额外资源文件
    
    https://github.com/tasinishmam/prisma-electron-test/blob/master/package.json
https://github.com/prisma/prisma/issues/12627
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.