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

问题描述 投票:4回答:3

我正在尝试使用VSCode调试我的电子锻造项目(电子主过程,而不是渲染),但到处都是错误的。我安装了所有依赖项的electron-forge包并初始化我的项目。

我遵循this指令,我的launch.json for 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/目录中没有这样的文件。

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

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

命令行是:

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

注意:11172是随机端口号

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

javascript node.js visual-studio-code electron forge
3个回答
3
投票

我相信你需要将"protocol"="legacy"添加到你的启动配置中。这假设您使用的是Node版本<8.x.


3
投票

我得出的结论是,如果使用电子伪造或电子编译,就不能使用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关闭之后才会附加。

我认为问题源于电子编译,eletron-forge使用。也许它与动态编译有关。

使用VSCode调试简单的Electron应用程序是一件轻而易举的事。此外,plain Electron在调试器窗口中发出不同的消息:

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
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.