javascript - Felsök electron-forge-app med VSCode


Jag försöker felsöka mitt electron-forge-projekt med VSCode (electron huvudprocess, inte render) men får fel överallt. Jag installerade electron-forge-paketet med alla beroenden och initierade mitt projekt.

Jag följde denna instruktion och min launch.json för VSCode var:

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

Men när jag tryckte på F5 i VSCode för att felsöka fick jag Attribute "runtimeExecutable" does not exist eftersom electron-forge är installerat globalt så det finns ingen sådan fil i node_modules/.bin/-katalogen.

Då ändrade jag enligt detta "runtimeExecutable" och min launch.json var som följer:

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

Kommandoraden var:

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

Men ändå hände ingenting. Min Electron-app startade men stoppade inte som --debug-brk argumentet borde ha gjort.

Nästa lade jag till en rad i min launch.json:

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

Startad med denna kommandorad:

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

Observera: 11172 är ett slumpmässigt portnummer

Och nu får jag detta fel: Kan inte ansluta till runtime-processen, timeout efter 10000 ms - (orsak: Kan inte ansluta till målet: connect ECONNREFUSED 127.0.0.1:11172).

Svar #1

Jag har kommit fram till att du inte kan använda VSCode för att debugga huvudprocessen i Electron om du använder electron-forge eller electron-compile. I båda fallen ignorerar VSCode-debuggern brytpunkter. BrowserWindow öppnas direkt och följande meddelande visas i VSCode-debuggkonsolfönstret:

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

Ibland när jag stänger webbläsarfönstret träffas en brytpunkt i händelsehanteraren för "stäng alla fönster". Efter att ha stängt fönstret visas följande meddelande i felsökningskonsolen:

Debugger attached.

Kanske indikerar detta att VSCode-debuggern inte ansluter förrän efter att BrowserWindow stängs.

Jag tror att problemet har sitt ursprung i electron-compile, som electron-forge använder. Kanske har det något att göra med att kompilera i farten.

Att använda VSCode för att felsöka en enkel Electron-app är en barnlek. Dessutom skickar vanlig Electron ett annat meddelande i felsökningsfönstret:

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.

Detta indikerar att vanlig Electron använder en annan metod för att ansluta till felsökaren än vad electron-compile gör.

Det är synd att electron-forge inte fungerar med felsökning av VSCode:s huvudprocess. Detta gör det värdelöst för mig. Dessutom verkar utvecklarna av electron-forge och electron-compile inte betrakta detta som ett problem. Det skulle vara hjälpsamt att veta vilka felsökare utvecklarna av electron-forge och electron-compile och användarna av dessa paket använder för att felsöka huvudprocessens kod.

Svar #2

Jag tror att du behöver lägga till "protocol"="legacy" i din startkonfiguration. Detta under antagandet att du använder en Node-version < 8.x