使用VSCode调试电子伪造应用程序

问题描述:

我试图用VSCode(电子主进程,不渲染)调试我的电子伪造项目,但随处可见错误。我安装了具有所有依赖项的electron-forge包,并初始化我的项目。使用VSCode调试电子伪造应用程序

我跟着this指导和我launch.json为VSCode是:

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "type": "node", 
      "request": "launch", 
      "name": "Electron Main", 
      "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-forge-vscode-win.cmd", 
      "cwd": "${workspaceRoot}" 
     } 
    ] 
} 

但是,当我在VSCode打F5调试,我得到Attribute "runtimeExecutable" does not exist,因为electron-forge在全球范围内安装,以便有在node_modules/.bin/ dir中没有这样的文件。

然后根据this我改变"runtimeExecutable"和我launch.json如下:

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "type": "node", 
      "request": "launch", 
      "name": "Electron Main", 
      "runtimeExecutable": "electron-forge-vscode-win.cmd", 
      "cwd": "${workspaceRoot}" 
     } 
    ] 
} 

的COMAND行是:

electron-forge-vscode-win.cmd --debug-brk=17423 --nolazy 
√ Locating Application 
√ Preparing native dependencies 
√ Launching Application 

但仍然没有发生。我的电子应用程序开始,但并没有停止,因为--debug-brk论据应该。

接下来,我添加了一行到我launch.json

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "type": "node", 
      "request": "launch", 
      "cwd": "${workspaceRoot}", 
      "name": "Electron Main", 
      "runtimeExecutable": "electron-forge-vscode-win.cmd", 
      "protocol": "inspector" 
     } 
    ] 
} 

使用此命令行启动:

electron-forge-vscode-win.cmd --inspect=11172 --debug-brk 
√ Locating Application 
√ Preparing native dependencies 
√ Launching Application 

注:是一个随机端口号

现在我收到此错误:Cannot connect to runtime process, timeout after 10000 ms - (reason: Cannot connect to the target: connect ECONNREFUSED 127.0.0.1:11172)

我相信你需要添加 "protocol"="legacy" 要将启动配置。这是假设您正在使用节点版本< 8。x

只需在协议后添加【"port": 11172】launch.json

my launch.json file

我得出结论,如果您使用电子伪造或电子编译,您不能使用VSCode调试主电子过程。在这两种情况下,VSCode调试器都会忽略断点。该BrowserWindow直接出现,并出现在VSCode调试控制台窗口下面的消息:

Debugging with inspector protocol because a runtime executable is set. 
c:\Users\paulk\OneDrive\dev\forge-debug/node_modules/.bin/electron.CMD --inspect=16988 --debug-brk . 
Debugger listening on ws://127.0.0.1:16988/9cead160-c448-4b33-a8a2-2dff6f51ed59 

有时,当我关闭浏览器窗口,在“关闭所有窗口”事件处理程序断点被击中。关闭窗口后,将出现在调试控制台以下消息:

Debugger attached. 

这或许表明VSCode调试程序并不重视,直到BrowserWindow关闭后。

我认为这个问题起源于电子编译,电子锻造使用。也许这与编译动态有关。

使用VSCode来调试一个简单的电子应用程序是一件轻而易举的事情。此外,纯电子在调试窗口发射不同信息:

Debugging with inspector protocol because a runtime executable is set. 
c:\Users\paulk\OneDrive\dev\electron-quick-start/node_modules/.bin/electron.CMD --inspect=37884 --debug-brk . 
Debugger listening on port 37884. 
Warning: This is an experimental feature and could change at any time. 

这表明普通的电子是利用连接到比确实电子编译调试器的一种不同的方法。

这是一个遗憾,电子伪造不适用于VSCode主流程调试。这对我来说毫无用处。此外,电子伪造和电子编译的开发人员似乎也没有认为这是一个问题。了解电子伪造和电子编译的开发人员以及这些软件包的用户正在使用它们来调试主流程代码是很有帮助的。

+0

显然这是由电子预编译(1.8.2-beta 3)使用的电子版本中的一个错误。见https://github.com/electron-userland/electron-forge/issues/401#issuecomment-354369382。 –