javascript - Feilsøk electron-forge-app med VSCode


Jeg prøver å feilsøke mitt electron-forge-prosjekt med VSCode (electron hovedprosess, ikke render) men får feil overalt. Jeg installerte electron-forge-pakken med alle avhengigheter og initierte prosjektet mitt.

Jeg fulgte denne instruksjonen, og min launch.json for 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 jeg trykker F5 i VSCode for å feilsøke, fikk jeg Attribute "runtimeExecutable" does not exist fordi electron-forge er installert globalt, så det finnes ingen slik fil i node_modules/.bin/-mappen.

Så i henhold til dette endret jeg "runtimeExecutable" og min launch.json var som følger:

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

Kommandolinjen var:

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

Men fortsatt skjedde ingenting. Min Electron-app startet, men stoppet ikke som --debug-brk-argumentet skulle.

Deretter la jeg til én linje 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"
        }
    ]
}

Lansert med denne kommandolinjen:

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

Merk: 11172 er et tilfeldig portnummer

Og nå får jeg denne feilen: Kan ikke koble til runtime-prosess, tidsavbrudd etter 10000 ms - (årsak: Kan ikke koble til målet: connect ECONNREFUSED 127.0.0.1:11172).

Svar #1

Jeg har kommet til den konklusjonen at du ikke kan bruke VSCode til å feilsøke hovedprosessen i Electron hvis du bruker electron-forge eller electron-compile. I begge tilfeller ignorerer VSCode-feilsøkeren brytepunkter. BrowserWindow åpnes direkte, og følgende melding vises i VSCode-feilsøkingskonsollvinduet:

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

Noen ganger når jeg lukker nettleservinduet, blir et bruddpunkt i "close all windows"-hendelsesbehandleren truffet. Etter å ha lukket vinduet, vises følgende melding i feilsøkingskonsollen:

Debugger attached.

Kanskje dette indikerer at VSCode-debuggeren ikke kobler til før BrowserWindow lukkes.

Jeg tror problemet stammer fra electron-compile, som electron-forge bruker. Kanskje det har noe å gjøre med å kompilere på direkten.

Å bruke VSCode til å feilsøke en enkel Electron-app er en lek. Videre sender vanlig Electron en annen melding i debugger-vinduet:

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.

Dette indikerer at vanlig Electron bruker en annen metode for å koble til feilsøkeren enn det electron-compile gjør.

Det er synd at electron-forge ikke fungerer med VSCode sin hovedprosess-debbuging. Dette gjør det ubrukelig for meg. I tillegg ser det ikke ut til at utviklerne av electron-forge og electron-compile anser dette som et problem. Det ville vært nyttig å vite hvilke debuggere utviklerne av electron-forge og electron-compile og brukerne av disse pakkene bruker for å debugge kode i hovedprosessen.

Svar #2

Jeg tror at du trenger å legge til "protocol"="legacy" i oppstartsinnstillingene dine. Dette forutsetter at du bruker en Node-versjon < 8.x