苏南大叔的前几篇有关electron伪协议文章中,如果大家仔细阅读了的话,就会发现:苏南大叔一直在强调是生产模式。那也就是在暗示大家,如果不是生产模式的话,这里可能会出现与预期不太相符的情况。这个问题的产生原因,还主要要归结于生产模式和调试模式的参数传递方式的根本区别。

苏南大叔:electron伪协议,如何在调试模式下进行调试? - electron-fake-protolcal-debug
electron伪协议,如何在调试模式下进行调试?(图6-1)

本文测试环境:win10/electron@5.0.1

注册伪协议的args

从苏南大叔的上一篇文章中,大家可以知道,注册一个新的伪协议的方法是:

app.setAsDefaultProtocolClient(PROTOCOL, process.execPath, args);

详情请点击:

这里有个可选参数args,如果设置为默认的[],那么在调试模式下,您可能会看到如下类似的错误提示:

Error launching app
Unable to find Electron app at <path>\<url>
Cannot find module <path>\<url>

苏南大叔:electron伪协议,如何在调试模式下进行调试? - fake-protolcal-error
electron伪协议,如何在调试模式下进行调试?(图6-2)

解决方案就是:
调试模式下的args,需要传递当前项目路径,进而写入注册表。

if (!app.isPackaged) {
  args.push(path.resolve(process.argv[1]));
}

另外,据官方文档,在这里低版本的electron会有个漏洞,解决方案就是:再对args进行一下加工。当然,您也可以使用升级electron最新版的方法,来解决这个问题。

args.push('--');

相关文章是:

  • 大家如果看了官方说明的话,就可以知道:这个最后的args是个windows专属的参数。所以,对于maccentos来说 ,可能就无能为力了。

下面的是个范例代码:

const {app,BrowserWindow} = require('electron')
const path = require("path")
if(app.isPackaged){
  app.setAsDefaultProtocolClient("sunan",process.execPath,["--"]);
}
else{
  app.setAsDefaultProtocolClient("sunan",process.execPath,[path.resolve(process.argv[1]),"--"]);
}

苏南大叔:electron伪协议,如何在调试模式下进行调试? - electron-protocal-code
electron伪协议,如何在调试模式下进行调试?(图6-3)

总结

如果能够在electron的伪协议开发过程中,注意到了如上两点,那么就可以顺利调试了。当然,如果您还是不明白的话,建议您查看下下面的这几篇文章,然后也许会有新的发现。

本文测试环境是win10,暂时还没有在其他操作系统下测试,理论上来说,应该是差不多的。更多electron相关经验,请点击苏南大叔的文章:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   electron

本站的忠实读者小伙伴,正在阅读下面这些文章: