electron集成若依,打包成exe文件

606 阅读2分钟

首先需要版本号大于14.0.0的较新的node版本

建议最好先安装淘宝镜像源

npm config set registry registry.npm.taobao.org

查看是否安装成功

cnpm -v

然后执行 cnpm install electron --save-dev

📝1.添加打包工具

vue add electron-builder

📝2.配置electron镜像地址

npm config set registry registry.npm.taobao.org/

npm config set electron_mirror="npm.taobao.org/mirrors/ele…"

npm config set electron_builder_binaries_mirror="npm.taobao.org/mirrors/ele…"

📝3.项目中设置跨域(访问不到后端接口)

打开env.development文件

VUE_APP_BASE_API = '线上地址/prod-api'

📝4.进行打包 npm run electron:build // 打包命令

打包成功后会在dist_electron中生成了exe文件,点击安装即可

📝5.设置应用图标

需要256*256,格式为ico,注意,不能采用直接修改后缀名的方式,需要使用专门的网站转换

打开 background.js文件 在createWindow事件里面

const win = new BrowserWindow({ width: 800, height: 600, icon: 'src/assets/logo/logo.ico', })

在build文件夹里 新增一个 256X256的名字为icon的ico文件

📝6.登录成功不能跳转

是因为jscookie的问题,将登录页面 (login)页面的所有cookies修改成 localStorage

const username = Cookies.get("username")

修改成

const username = localStorage.getItem("username")

找到路径 src/utils/auth 页面的所有cookies修改成 localStorage

export function getToken() { return localStorage.getItem(TokenKey) } 如果发现跳转到该页面没有调接口,也要把该页面cookie修改成localStorage

找到路径 src/router/index页面的 将history修改成 hash

export default new Router({
  mode: 'hash', // 去掉url中的#
  scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

📝7.修改打包名称为中文

在package.json文件 增加"productName": "你的中文名称",

📝8.打包后退出登录页面白屏

找到退出登录页面 src/layout/components/Navbar文件

找到退出事件

async logout() {

this.$confirm('确定注销并退出系统吗?', '提示', {

confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'

}).then(() => {

this.$store.dispatch('LogOut').then(() => {
 // location.href = '/index';    

      换成 

    this.$router.push('/login')
 

})

}).catch(() => {}); } }

📝9.只能打开一个exe文件(在background.js 增加下面这段代码,将app关闭的事件也放在里面)

let myWindow = null

const additionalData = { myKey: 'myValue' }

const gotTheLock = app.requestSingleInstanceLock(additionalData)

if (!gotTheLock) {

app.quit()
    

} else {

app.on('second-instance', (event, commandLine, workingDirectory, additionalData) => {

// 输出从第二个实例中接收到的数据

console.log(additionalData)

// 有人试图运行第二个实例,我们应该关注我们的窗口 if (myWindow) {

if (myWindow.isMinimized()) myWindow.restore()
myWindow.focus()

} }) app.on('window-all-closed', () => {

if (process.platform !== 'darwin') {
  app.quit()
}

}) }

gitee地址:gitee.com/gentleBai/e…

哔哩哔哩地址:www.bilibili.com/video/BV1mo…