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