优质回帖
3 回帖
登录参与讨论
...
-
我是跳跳吧 (imlinhanchao) • 1 年前
单独打包Web,全局 install electron-package
再在 dist 里面新建一个 index.js 如下:
const {ipcMain} = require('electron') const electron = require('electron'); // 控制应用生命周期的模块。 const {app} = electron; // 创建原生浏览器窗口的模块。 const {BrowserWindow} = electron; // 保持一个对于 window 对象的全局引用,如果你不这样做, // 当 JavaScript 对象被垃圾回收, window 会被自动地关闭 let mainWindow; function createWindow() { // 创建浏览器窗口。 mainWindow = new BrowserWindow({kiosk: true, frame: false}); // 加载应用的 index.html。 mainWindow.loadURL(`file://${__dirname}/index.html`); // 启用开发工具。 //mainWindow.webContents.openDevTools(); // 当 window 被关闭,这个事件会被触发。 mainWindow.on('closed', () => { // 取消引用 window 对象,如果你的应用支持多窗口的话, // 通常会把多个 window 对象存放在一个数组里面, // 与此同时,你应该删除相应的元素。 mainWindow = null; }); } // Electron 会在初始化后并准备 // 创建浏览器窗口时,调用这个函数。 // 部分 API 在 ready 事件触发后才能使用。 app.on('ready', createWindow); // 当全部窗口关闭时退出。 app.on('window-all-closed', () => { // 在 macOS 上,除非用户用 Cmd + Q 确定地退出, // 否则绝大部分应用及其菜单栏会保持激活。 if (process.platform !== 'darwin') { app.quit(); } }); app.on('activate', () => { // 在 macOS 上,当点击 dock 图标并且该应用没有打开的窗口时, // 绝大部分应用会重新创建一个窗口。 if (mainWindow === null) { createWindow(); } }); ipcMain.on('win-close', (event, arg) => { app.quit() })
然后在dist 目录运行
electron-packager ./ WebApp --platform=win32 --arch=ia32 --out ./Build --overwrite --icon=./favicon.ico
WebApp 换成你要 build 成的 exe 名称。
1 回复 1 1 0 -
-
沃尔夫 (q1627743028) • 1 年前
找到关键问题了,electron这个东西对vue3的兼容性有一定的问题,查看了源码之后发现他对vue3的setup语法糖的兼容性有问题,由于我的vue3的整个项目的架构是
*.ts
文件去写的electron再树节点识别的时候,只能用*.js
的文件去构建。。。(看源码给我看吐了)下面就说一下踩坑方法一:
修改
index.html
文件<script type="module" src="./src/main.ts"></script>
type="module"
这个地方改成type="text/javascript"
他就可以正确的把js节点和scss节点给挂上去方法二:
修改
tsconfig.json
文件中的compilerOptions
中的target
变成ES5就可以挂上节点了,但是这样setup的语法糖会存在失效的问题(不建议使用)方法三:
强烈推荐!!!在最后build的时候再使用electron进行打包生成好的dict文件,就是跳跳大佬的方法!跳跳大佬牛皮👍 (最后感谢跳跳大佬)😋
1 0 0
单独打包Web,全局 install electron-package
再在 dist 里面新建一个 index.js 如下:
然后在dist 目录运行
WebApp 换成你要 build 成的 exe 名称。