Отладка приложения electronic-forge с помощью VSCode

Я пытаюсь отладить свой проект электронной кузницы с помощью VSCode (основной процесс электроники, а не рендеринг), но везде получаю ошибки. Я установил electron-forge пакет со всеми зависимостями и запустил свой проект.

Я выполнил эту инструкцию и launch.json для 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}"
        }
    ]
}

Но когда я нажал F5 в VSCode для отладки, я получил Attribute "runtimeExecutable" does not exist, потому что electron-forge установлен глобально, поэтому такого файла нет в node_modules/.bin/ каталоге.

Затем, согласно это, я изменил "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).


person Stepii    schedule 07.07.2017    source источник


Ответы (3)


Я считаю, что вам нужно добавить "protocol"="legacy" в конфигурацию запуска. Это при условии, что вы используете версию Node ‹8.x

person LeteciTanjir    schedule 20.07.2017

Я пришел к выводу, что вы не можете использовать 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 очень просто. Кроме того, обычный 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.

Это указывает на то, что простой Electron использует другой метод подключения к отладчику, чем электронная компиляция.

Очень жаль, что electronic-forge не работает с отладкой основного процесса VSCode. Это делает его бесполезным для меня. Кроме того, разработчики электронных кузниц и электронных компиляций, похоже, не считают это проблемой. Было бы полезно знать, какие отладчики используют разработчики электронных кузниц и электронных компиляций, а также пользователи этих пакетов для отладки основного кода процесса.

person Paul Kinnucan    schedule 28.12.2017
comment
По-видимому, это ошибка в версии electronic, которая используется в программе electronics-prebuilt-compiled (1.8.2-beta 3). См. github.com/electron-userland/electron-forge/issues /. - person Paul Kinnucan; 29.12.2017

Просто добавьте 【"port": 11172】 в launch.json после протокола.

мой файл launch.json

person John Huang    schedule 12.07.2017