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
