app.makeSingleInstance is not a function

今天启动一个已有的项目的时候报错app.makeSingleInstance is not a function,原因是那个项目是别人以前写的,在那个electron2.0时代,确实是用app.makeSingleInstance来实现单实例的。

但是现在已经是electron4.0时代了,已经不存在这个方法了(一般来说应该做到向下兼容的,但是这个方法真的没有了),现在是使用app.requestSingleInstanceLock()方法来实现单实例的:

const { app } = require('electron')
let myWindow = null

const gotTheLock = app.requestSingleInstanceLock()

if (!gotTheLock) {
  app.quit()
} else {
  app.on('second-instance', (event, commandLine, workingDirectory) => {
    // 当运行第二个实例时,将会聚焦到myWindow这个窗口
    if (myWindow) {
      if (myWindow.isMinimized()) myWindow.restore()
      myWindow.focus()
    }
  })

  // 创建 myWindow, 加载应用的其余部分, etc...
  app.on('ready', () => {
  })
}

把app.makeSingleInstance换成app.requestSingleInstanceLock()来实现后,ok可以启动了

参考:https://newsn.net/say/electron-single-instance-lock.html


后续:

启动后就页面最上方有东西,啥功能也没有,那么就调试看看吧,在main.js里加入调试部分:(记得安装依赖,不装它也会提示你装的)

// Install `electron-debug` with `devtron`
require('electron-debug')({ showDevTools: true })

// Install `vue-devtools`
require('electron').app.on('ready', () => {
  let installExtension = require('electron-devtools-installer')
  installExtension.default(installExtension.VUEJS_DEVTOOLS)
    .then(() => {})
    .catch(err => {
      console.log('Unable to install `vue-devtools`: \n', err)
    })
})

跑起来后果然能看到控制台报错了:

去网上搜,发现有人提出这个issue了:https://github.com/atom/node-keytar/issues/64

照着改吧:

先安装了npm install --save-dev electron-rebuild,运行之后发现还是报那个错,然后又运行了这条命令./node_modules/.bin/electron-rebuild,果然没有一帆风顺的事情,在你通往成功的路上总会埋伏几个甚至几堆错误

又上网搜索答案吧,又看到了一个issue:https://github.com/electron/electron-rebuild/issues/35

就是装依赖呗: npm install --save-dev electron-prebuilt 之后再运行命令./node_modules/.bin/electron-rebuild

好了,终于没出幺蛾子了,那就启动项目看看吧

WTF??? 我好想哭啊啊啊啊,到底是什么鬼这么捉弄我,我换回app.makeSingleInstance还不行吗,换回之后在启动:

OK,能启起来了,但是还有一个报错:

没找到解决方法。。。。先暂停 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值