Electron – это платформа с открытым исходным кодом, основанная на Node.js и Chromium, для создания настольных приложений. Разработчики могут использовать веб-технологии (HTML, JavaScript и CSS) для завершения разработки всего приложения. На основе Electron реализованы многие известные настольные приложения, такие как VSCode, Slack и GitHub Desktop. В этой статье будут представлены некоторые распространенные методы отладки приложений Electron.
Отладка среды разработки
Процесс приложения Electron разделен на основной процесс и процесс рендеринга, а базовые реализации соответствуют Node.js и Chromium соответственно. Таким образом, способ отладки приложений Electron в основном эквивалентен их комбинации В настоящее время решения, предоставляемые сообществом, относительно полны.
Отладка основного процесса
Основной процесс Electron — это процесс Node.js. Node.js был представлен после 8--inspect
Параметры используются для отладки, а также применяются к основному процессу Electron:
./node_modules/.bin/electron . --inspect
По умолчанию оно будет прослушивать порт 9229. После запуска приложение будет открыто в браузере Chrome (или других браузерах на основе Chromium)chrome://inspect
Вы можете увидеть соответствующий сеанс отладки, щелкните ссылку сеанса, чтобы открыть инструменты разработки для отладки.
Кроме того, вы можете указать номер порта в параметре командной строки для одновременной отладки нескольких процессов в нескольких приложениях без конфликтов:
./node_modules/.bin/electron . --inspect=1234
Отладка процесса рендеринга
Только с точки зрения отладки процесс рендеринга Electron можно просто понять как окно Chromium. Таким образом, это в основном то же самое, что и способ отладки веб-страниц в браузере Chrome, то есть после фокусировки на текущем окне используйтеCtrl+Shift+I
(Под macOS этоCmd+Option+I
) ярлык для открытия devtools. Использование тоже самое.
Метод ярлыка может не дать ожидаемого эффекта в некоторых особых случаях, например, когда окно скрыто и не может быть сфокусировано на окне. На этом этапе вы можете использовать JavaScript API, предоставленный Electron, для открытия инструментов разработки в коде:
const mainWindow = new BrowserWindow();
mainWindow.loadURL("file://path/of/index.html");
mainWindow.webContents.openDevTools();
Приведенный выше демонстрационный код будет выполнять действия по открытию инструментов разработки после загрузки HTML-файла. При фактическом использовании просто поместите его там, где вам это нужно.
Отладка в VSCode
Вышеупомянутые методы откроют интерфейс devtools, и все операции по отладке будут выполняться в devtools. Для некоторых операций, таких как отладка точки останова кода, его можно дополнительно комбинировать с редактором или IDE, чтобы улучшить процесс разработки. Далее будет кратко описано, как выполнять отладку в VSCode.
Используйте официальный шаблон Electronelectron-quick-startНапример, сначала нужно установить расширение для VSCode:Debugger for Chrome(для отладки процесса рендеринга). Клонируйте репозиторий кода локально и установите зависимости:
git clone https://github.com/electron/electron-quick-start.git
cd electron-quick-start
npm install
Затем добавьте файл в репозиторий.vscode/launch.json
, содержание следующее:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Main",
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
"runtimeArgs": ["--remote-debugging-port=9222", "."],
"windows": {
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd"
}
},
{
"name": "Renderer",
"type": "chrome",
"request": "attach",
"port": 9222,
"webRoot": "${workspaceFolder}"
}
],
"compounds": [
{
"name": "All",
"configurations": ["Main", "Renderer"]
}
]
}
Затем выберите панель отладки в левой части VSCode и запуститеAll
Этот пункт запускает отладку, в это время вы можетеmain.js
илиrenderer.js
В файл добавлена точка останова.
Некоторые ключевые моменты в файле конфигурации объясняются ниже:
-
configurations
Два элемента соответствуют основному процессу и процессу рендеринга соответственно.compounds
Комбинированный сеанс указан вAll
,выберитеAll
Обе сессии будут запущены одновременно. - в конфигурации рендерера
webRoot
параметры используются напрямую${workspaceFolder}
, потому что в этом проекте статические ресурсы, на которые ссылается HTML, расположены в корневом каталоге. При фактическом использовании его необходимо обновить до соответствующего пути, чтобы он вступил в силу. - В реальной разработке может быть процесс компиляции, такой как использование TypeScript с инструментом упаковки Webpack, окончательный сгенерированный код и исходный код не находятся на одном пути. В этом случае необходимо создать исходную карту, чтобы установить отношение отображения.
Отладка рабочей среды
Производственная среда немного сложнее, чем среда разработки. Вообще говоря, мы хотим иметь запись для открытия devtools для облегчения отладки, когда что-то пойдет не так, с другой стороны, эта запись не имеет никакого отношения к самому продукту, и мы хотим, чтобы она была скрыта от пользователей. Более распространенным решением является указание набора закрытых сочетаний клавиш, прослушивание соответствующих событий и вызов API JavaScript в обратном вызове для открытия инструментов разработки, а также установка сложных комбинаций сочетаний клавиш, чтобы уменьшить вероятность того, что пользователи прикоснутся к ним по ошибке.
Схема горячих клавиш имеет определенную целесообразность, но принципиально не решает эту проблему. Поэтому рекомендуется использоватьDebugtronдля отладки. Debugtron — это инструмент для отладки приложений Electron в рабочей среде без интеграции кода на стороне клиента. Сам он также построен на Electron и поддерживает несколько платформ.
Загрузите последнюю версиюПосле установки и открытия Debugtron обнаруживаются и отображаются все установленные приложения Electron:
После нажатия на значок появится ссылка для отладки. Взяв в качестве примера Electron Fiddle, после нажатия на значок для запуска в левой части панели будет отображаться список отлаживаемых сеансов, включая основной процесс и процесс рендеринга, которые можно отличить по меткам. Справа отобразится лог запуска основного процесса:
Выберите элемент в списке сеансов слева, и после нажатия появятся соответствующие инструменты разработки, где вы можете увидеть журнал ошибок и найти проблему, которая точно такая же, как и в среде разработки. В то же время он также поддерживает отладку нескольких приложений.После запуска нескольких приложений вы можете переключаться в области вкладок.
Суммировать
Решение для отладки Electron относительно завершено.В процессе разработки как основной процесс, так и процесс рендеринга могут легко открывать инструменты разработки для отладки, и этот рабочий процесс также можно глубоко интегрировать в VSCode для улучшения опыта разработки.
В производственной среде вы можете использовать Debugtron для отладки, и вы можете получить в основном те же функции, что и в среде разработки, без интеграции дополнительного кода в клиент.
Оригинальная ссылка:GitHub.com/meet 4 из 10/блог…