Debug electron-forge app with VSCode
Asked Answered
M

3

6

I'm trying to debug my electron-forge project with VSCode (electron main process, not render) but getting erros everywhere. I installed electron-forge package with all dependencies and init my project.

I followed this instruction and my launch.json for VSCode was:

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

But when I hit F5 in VSCode to debug, I got Attribute "runtimeExecutable" does not exist because electron-forge is installed globally so there is no such file in node_modules/.bin/ dir.

Then according to this I changed "runtimeExecutable" and my launch.json was as follows:

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

The comand line was:

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

But still nothig happened. My electron app started but didn't stop as --debug-brk argument supposed.

Next, I added one line to my launch.json:

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

Launched with this command line:

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

Note: 11172 is a random port number

And now I'm getting this error: Cannot connect to runtime process, timeout after 10000 ms - (reason: Cannot connect to the target: connect ECONNREFUSED 127.0.0.1:11172).

Mcneil answered 7/7, 2017 at 9:52 Comment(0)
A
3

I believe that you need to add "protocol"="legacy" To your launch config. This is with the assumption that you are using a Node version < 8.x

Attwood answered 20/7, 2017 at 1:59 Comment(0)
T
4

I've come to the conclusion that you cannot use VSCode to debug the main electron process if you use electron-forge or electron-compile. In both cases, the VSCode debugger ignores breakpoints. The BrowserWindow comes up directly and the following message appears in the VSCode debug console window:

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

Sometimes when I close the browser window, a breakpoint in the "close all windows" event handler is hit. After closing the window, the following message appears in the debug console:

Debugger attached.

Perhaps this indicates that the VSCode debugger does not attach until after the BrowserWindow closes.

I believe the problem originates with electron-compile, which eletron-forge uses. Perhaps it has something to do with compiling on the fly.

Use VSCode to debug a simple Electron app is a breeze. Further, plain Electron emits a different message in the debugger window:

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.

This indicates that plain Electron is using a different method of connecting to the debugger than does electron-compile.

It is a shame that electron-forge does not work with VSCode main process debugging. This makes it useless for me. Also, the developers of electron-forge and electron-compile do not seem to consider this a problem. It would be helpful to know what debuggers the developers of electron-forge and electron-compile and the users of these packages are using to debug main process code.

Threaten answered 28/12, 2017 at 20:16 Comment(1)
Apparently this is a bug in the version of electron used by electron-prebuilt-compiled (1.8.2-beta 3). See github.com/electron-userland/electron-forge/issues/….Threaten
A
3

I believe that you need to add "protocol"="legacy" To your launch config. This is with the assumption that you are using a Node version < 8.x

Attwood answered 20/7, 2017 at 1:59 Comment(0)
P
0

Just add 【"port": 11172】 in launch.json after protocol.

my launch.json file

Ptolemaist answered 12/7, 2017 at 2:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.