Как отладить сбой сценария предварительной загрузки headless Electron?

#debugging #electron #headless

#отладка #electron #безголовый

Вопрос:

У меня есть приложение Electron с кодом, подобным

 let win = new BrowserWindow({ show: false, frame: false, webPreferences: {preload: "/path/to/preload.js", ...}, ...});
 

и при разработке новой функции я пропустил одну закрывающую скобку и одну закрывающую скобку. Конечно, я этого не знал, и вместо этого я получил вывод на консоль при попытке запустить приложение

 [18330:1204/142153.915989:INFO:CONSOLE(91)] "Unable to load preload script: /path/to/preload.js", source: electron/js2c/renderer_init.js (91)
[18330:1204/142153.916049:INFO:CONSOLE(91)] "SyntaxError: missing ) after argument list", source: electron/js2c/renderer_init.js (91)
 

По какой-то причине electron не хочет делиться исключением, которое он фактически получает при попытке загрузить сценарий предварительной загрузки. Например, номер строки исходной ошибки синтаксического анализа был бы отличным! Так что в итоге я не имею ни малейшего представления о реальной причине только в одном журнале. Обратите внимание, что эта проблема связана с проблемами с содержимым сценария предварительной загрузки — я знаю, что у некоторых людей возникают проблемы с тем, что сценарий предварительной загрузки не найден electron.

Также обратите внимание, что во второй строке журнала утверждается, что ошибка находится в файле electron/js2c/renderer_init.js в строке 91, что, очевидно, является только неправильным сообщением от electron.

Есть ли способ записать фактическую ошибку синтаксического анализа в журнал?Я пытаюсь создать приложение без головы для запуска, xvfb-run поэтому мне нужно иметь выходные данные в журнале.

В настоящее время я работаю с electron v10.0.1, но я готов воспользоваться подсказками для любой версии. В настоящее время единственный путь вперед — использовать внешние линтеры или случайным образом закомментировать недавно измененные блоки кода и попытаться выяснить проблему вручную. Должен быть лучший способ.

Я уже передаю следующие флаги командной строки в electron:

 --enable-logging --v=2 --debug-print --noerrdialogs --headless