electron + vue + elementUI 常见问题及解决方案

开机启动问题

网上搜到的都是window下采用注册表写入的方式做的,找不到Mac的方法,其实有一个通用的包可以解决这个问题:

yarn add auto-launch -D

来看具体代码

const AutoLaunch = require('auto-launch')

var launch = new AutoLaunch({
  name: 'TimeManager', // APP 名称
  path: process.execPath 
})

// 更新开机自动启动配置
function updateAutoLaunch (isAutoLaunch) {
  if (isAutoLaunch) { // 开机自启
    launch.enable()
    launch.isEnabled().then((isEnabled) => {
      if (isEnabled) {
        console.log('修改成功,当前开机自启状态: ', app.getLoginItemSettings().openAtLogin)
        return
      }
      console.error('重试再次开启....', app.getLoginItemSettings().openAtLogin)
      launch.enable()
      console.log('修改成功,当前开机自启状态: ', app.getLoginItemSettings().openAtLogin)
    }).catch((err) => {
      console.error(err)
    })
  } else { // 取消开机自启
    launch.disable()
    launch.isEnabled().then((isEnabled) => {
      if (!isEnabled) {
        console.log('修改成功,当前开机自启状态: ', app.getLoginItemSettings().openAtLogin)
        return
      }
      console.error('重试再次关闭....', app.getLoginItemSettings().openAtLogin)
      launch.disable()
      console.log('修改成功,当前开机自启状态: ', app.getLoginItemSettings().openAtLogin)
    }).catch((err) => {
      console.error(err)
    })
  }
}

打包后查看日志

打包后调试比较麻烦,遇到问题往往直接就挂了,所以需要导出日志文件:

// 只考虑生产环境
if (process.env.NODE_ENV === 'production') {
  const log = require('electron-log')
  // 重写 console 的方法,日志会在控制台输出,并且输出到本地文件。具体用法参考官方文档
  Object.assign(console, log.functions)
  // 获取本地日志文件路径
  console.log('日志文件:', log.transports.file.getFile())
}

打包运行后,可以在:~/Library/Logs/{app name}/main.log中查看日志信息:

  • 这里的app namepackage.json中的name属性的值一致

另外,调试的时候,console.log(obj),最好采用序列化的方式输出,否则objconsole后又被修改的话,就可能不会按预期顺序输出。

let obj = { value:10 }
console.log("obj :",obj) // 期望输出  obj.value : 10
obj.value =5
console.log("obj :",obj) // 期望输出  obj.value : 5

如下图所示,console.log的输出不符合预期了:
在这里插入图片描述
解决办法:console.log(JSON.stringify(obj))

build后打不开app

报错信息:No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting

引入了通知包node-notifier,结果打包后报错了,解决办法如下:

通过 asarUnpack 指定不打包到 asar 的文件. 如果按照 Electron 官方文档的打包方式,可以使用:asar pack app app.asar --unpack ./node_modules/node-notifier/vendor/**

// package.json
"build": {
   "appId": "com.electron.time_manager",
   "asar": true,
   "asarUnpack": [
     "./node_modules/node-notifier/vendor/**"
   ]
 }

重新运行打包命令,可以在 app.asar 同目录看到对应的 unpacked 目录。

运行打包好的应用,可完美弹出对应的消息提示
另外,也可以通过不打包 asar 的方式使用,配置如下:

"build": {
    "appId": "com.codinglife.electron-notifier",
    "asar": false
}

打包后的应用中,源文件全部放在 app 目录下。

这个问题参考链接:https://www.it610.com/article/1297832652195307520.htm

打包后如何发布到Githubrelease

package.json文件中,需要配置的内容如下

{
  ...
  "scripts": {
    "release": "node .electron-vue/build.js && electron-builder -p always"
  },
  "build": {
    "publish": {
      "provider": "github"
    },
    ...
  },
  ...
}

需要先去Github申请tokenhttps://github.com/settings/tokens

然后要将这个TOKEN添加到你本地的环境变量中,Mac下:

vim ~/.bash_profile

然后加上:

export GH_TOKEN="前面申请到的 token 复制进来" 

设置后记得重新打开terminal才会生效

然后打包时执行即可:

yarn run release

完成后去Github上的release上先选tags,再切换回releases,就可以看到多了一个草稿。

另外,我们也可以先创建草稿,然后发布到指定草稿上,具体方法如下:
查看当前package.json中的version字段:

{
  "name": "TimeManager",
  "version": "0.0.2", // 这个字段
  ...
}

然后创建一个release草稿,注意Tag Version要填v加上前面的version字段,也就是这里我得填v0.0.2
在这里插入图片描述
填完之后保存为草稿:
在这里插入图片描述
然后命令行执行:yarn run release,就会自动打包后上传到这个草稿中,我们需要自行来点击Publish release进行发布。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜饼同学

帮助别人,就是帮助自己,共勉。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值