我一直在尝试让 Electron 程序在我的 Windows 10 笔记本电脑上运行,但无法BrowserWindow
打开,当我从 Visual Studio 2017 运行应用程序时,只有控制台打开。当我尝试Electron.exe
从文件夹中打开它本身时,没有任何反应。不过,可以在任务管理器中看到电子进程。
由于我没有收到任何错误或任何内容,因此我对此感到非常困惑。什么可以“阻止”Electron 显示任何窗口?错误的代码不是原因,因为我在我的项目中使用了与 Electron 快速启动完全相同的代码,并且打开Electron.exe
不需要我做任何事情。
编辑:当我尝试在 VS2017 中从零开始制作尽可能简单的 Electron 应用程序时,我尝试在console.log()
任何地方输入命令以查看调用的内容。在win = new BrowserWindow()
一行之前有一个日志命令,在一行之后有一个日志命令的地方,该行之后的一个new BrowserWindow()
没有被放入控制台。或者之后的任何其他。没有错误,警告,任何可以看到的。两个进程启动,其中一个进程在一段时间后消失。
编辑#2:选项BrowserWindow
只是高度和宽度({width: 800, height: 600})
没有什么特别的。但是在手动尝试每个 Electron 版本后,我注意到一件事:1.4.16 之后的每个 Electron 版本都不会在我的计算机上运行。1.5.0 及更高版本不会让我创建新的BrowserWindow
. 我不知道这是什么原因。他们在 1.5.0-> 中有什么变化,以至于我无法打开窗户。
我尝试在 VS 中使用断点,但是一旦BrowserWindow
执行了创建new 的行,代码执行就会......“跳过”其他所有内容。它不会转到下一个断点,不会崩溃,不会执行任何其他操作,不会抛出任何错误,只是如此。Electron.exe
控制台打开,VS 仍然显示程序正在运行,但仅此而已。这真的很奇怪。试图运行时,同样的情况,快速启动应用程序从使用命令行npm start
。
我只是在这里发布答案,因为我很久以前就设法解决了这个问题。出于某种原因,只要到达创建新窗口实例的部分,脚本就会“停止”。
解决这个问题的方法是使用 setTimeout() 和 0 延迟,并将其余代码放在新函数下。这可能与比赛条件有关,但我不知道。我通过一些随机的 GitHub 问题部分评论找到了这个解决方案。
另一件事:这个问题似乎只发生在应用程序启动时创建窗口时,而不是当应用程序已经运行时稍后通过 UI 按钮调用函数时。
// Works
setTimeout(function () {
var newWindow = new BrowserWindow({options});
}, 0);
// Doesn't work
var newWindow = new BrowserWindow({options});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句