Electron app.on('ready'... 永远不会被调用并且电子窗口永远不会显示。似乎绑定到特定的 Git 存储库

use*_*775 9 windows git node.js electron

概括

我是 Electron 开发的新手,正在帮助领导一个创建电子应用程序的小项目。在 Git 存储库中工作一天左右后,电子窗口突然停止出现。我已经确定我给出的函数回调app.on('ready' callback)永远不会被调用。

我的工作站设置:NodeJS 版本:12.9.0(也用 10.16.3 测试) Yarn 版本:1.17.3 操作系统:Windows 10 Enterprise

最初,当电子开始出现故障时,我松散地关注了Ryan Brockhoff 的关于将 Electron 与 React 结合使用的 Medium 帖子,但此后我削减了一个全新的 Git 分支并仅设置了一个极小的 Electron 项目,并且出现了同样的问题。

Electron 不会以相同的方式在系统范围内发生故障。我能够完美地运行电子 API 演示。此外,我在其中试验电子的旧测试目录仍然有效。

当我尝试运行损坏的电子存储库时,任务管理器确实将三个电子进程显示为命令行进程下的子进程。当我运行运行良好的电子进程时,电子进程显示为父进程

我确认永远不会通过console.log在函数内放置语句以及在分配回调时打印语句来调用“就绪”回调函数。正在到达回调分配打印语句,我可以在控制台上看到输出,但从未到达回调函数中的打印语句,并且该输出从未打印到控制台。

故障排除

在这一点上,我已经完成了许多故障排除步骤:

故障排除:我删除并重新克隆了计算机上其他位置的 Git 存储库结果:问题仍然存在

故障排除:让程序运行一段时间,也许它需要在准备好之前设置一些东西 结果:10+ 分钟后,没有变化

故障排除:我下载了 electron-api-demos 存储库以查看电子是否在该项目中工作 结果:electron-api-demos 按预期完美运行

故障排除:我将我的电子版本从“^6.0.3”降级到“^6.0.1”,这适用于我计算机上的不同项目结果:问题仍然存在

故障排除:我创建了一个新的空 Git 分支,没有代码,并试图在同一个 git 存储库中创建一个新的最小电子项目,我在结果中看到了问题:问题重新出现

故障排除:完全重新安装 Node JS,将版本从最新的 12.x 更改为 10.x LTS 结果:没有变化

故障排除:克隆并尝试在 Ubuntu 虚拟机中运行项目结果:成功,项目按预期工作

故障排除:要求同事在他们的 Windows 10 机器上安装项目 结果:成功,同事无法重现我的问题

代码

我建立了一个极小的项目来重现这个问题。以下是我目前的项目:

包.json

{
  ...
  "main": "main.js",
  "scripts": {
    "electron-start": "electron ."
  },
  "devDependencies": {
    "electron": "^6.0.3"
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

主文件

{
  ...
  "main": "main.js",
  "scripts": {
    "electron-start": "electron ."
  },
  "devDependencies": {
    "electron": "^6.0.3"
  },
  ...
}
Run Code Online (Sandbox Code Playgroud)

索引.html

const {app, BrowserWindow} = require('electron')      

function createWindow () {
  console.log("inside the on ready callback"); //for troubleshooting
  win = new BrowserWindow({width: 800, height: 600})  
  win.loadFile('index.html')   
}      

console.log("outside the function"); //for troubleshooting
app.on('ready', createWindow)
Run Code Online (Sandbox Code Playgroud)

当我运行时yarn electron-start,以下内容会打印到我的控制台:

yarn run v1.17.3
$ electron .

 outside the function
Run Code Online (Sandbox Code Playgroud)

永远不会到达 on ready 回调内部的打印语句。没有发出错误。

结论

在这一点上,我怀疑是我的电脑上有什么东西搞砸了。此代码在其中运行的 Git 存储库似乎也引起了问题。我已经做了很多谷歌搜索,我找不到其他人面临这个问题。从这里我唯一能想到的就是尝试废弃我们的整个 git 存储库并创建一个新的存储库(这可能也可能不可能),并将我的计算机带到技术支持部门以进行可能的替换。任何有关如何前进的线索将不胜感激。谢谢

use*_*775 17

好吧,所以我最终确实找到了解决方案。此错误是由于尝试使用electron-devtools-installer安装额外的 devtools 引起的。我发现该错误是由 %AppData%/electron 目录和 %AppData%/[projectname] 目录中遗留的数据引起的。删除这两个目录可以解决这个问题。

  • 我生命中的两个小时就这样消失了……啊!感谢您发布您的解决方案! (3认同)
  • 我将添加到此...您只需要删除“%APPDATA%/[projectname]”中的“DevTools Extensions”文件 (2认同)