Перейти к содержимому
Все статьи
Комментарии

Electron 45: что проверить в preload и демонстрации экрана

·27 октября 2026 г.· 5 мин чтения
Хотите внедрить ИИ в работу?ИИ для бизнеса

После перехода на Electron 45 проверьте две независимые вещи: зависимости sandboxed preload и разрешение демонстрации экрана. В preload больше нет прежних Node.js shims и ряда глобальных объектов, а запрос захвата экрана приходит как display-capture. Приложение может открываться без ошибок, но не выполнять нужную пользователю операцию.

Какие изменения действительно относятся к этому выпуску

Electron 45 выпущен 21 октября 2026 года. Анонс описывает удаление Buffer, setImmediate, clearImmediate и shims модулей events, timers, url из sandboxed preload. Это изменение конкретной среды исполнения, а не исчезновение Buffer из всего Node.js или из любого кода приложения.

Руководство по sandbox поясняет ограниченную среду preload и необходимость делегировать привилегированные задачи через предусмотренные каналы. Значит, исправление зависимости нужно искать в назначении кода: подходящий Web API, собранный необходимый polyfill или пересмотр границы взаимодействия. Отключать изоляцию только ради восстановления старого поведения мы не советуем.

Сначала операция пользователя, потом поиск зависимости

Составьте список действий, которые используют preload: открыть документ, передать выбранные данные, получить ответ от основного процесса. Затем найдите, какие из них завязаны на удалённые объекты. Простое текстовое совпадение Buffer в репозитории полезно как начало разбора, но не определяет место исполнения кода и смысл замены.

Учебный пример: приложение открывает окно с документом, а преобразование данных в preload срабатывает лишь после нажатия «Импортировать». Проверка запуска проходит, проверка пользовательского действия — нет. Здесь не требуется приписывать Electron новый дефект: изменилось предположение, на котором был построен код приложения.

Приёмочная карта двух независимых изменений

СценарийЧто проверить в реализацииПоложительный результатОбязательный отрицательный результат
Преобразование данных в preloadОткуда берутся необходимые объекты и модулиОжидаемые данные получены без прежней скрытой зависимостиОшибка входных данных обработана понятным способом
Связь с основным процессомКакие операции доступны через границуРазрешённая операция выполняется с нужными даннымиНепредусмотренная операция не становится доступной
Демонстрация экранаОбработка отдельного display-captureРазрешённый запрос приводит к согласованному сценарию выбораОтказ не запускает захват и не выдаёт ложный успех
Камера и микрофонСобственные условия разрешения mediaНужная функция продолжает работатьРазрешение другого типа не подменяет решение пользователя

Матрица — наша схема приёмки, не встроенный набор тестов Electron. Последний столбец нужен потому, что восстановление функции не должно незаметно расширить доступ. Для приложения без камеры и демонстрации экрана такие сценарии не надо придумывать: достаточно подтвердить отсутствие соответствующей зависимости.

Почему разрешённый media больше не отвечает за всё

Анонс сообщает, что захват экрана, окна или вкладки теперь поступает в session.setPermissionRequestHandler как display-capture вместо media. Обработчик, который разрешает media и отвергает всё остальное, требует пересмотра. При этом добавлять безусловное разрешение для каждого запроса — плохая замена проектной политике доступа.

Для проверки запишите, кто инициирует запрос, из какого окна он приходит и каким действием пользователь подтверждает намерение. Затем пройдите разрешение и отказ. Отсутствие чёрного экрана ещё не доказывает правильность политики: важно, чтобы возможность получал предусмотренный сценарий, а не любая загруженная страница.

Что передать разработчику для обновления

  1. Перечислите используемые пользовательские действия, зависящие от preload.
  2. Укажите места исполнения и прежние зависимости этих действий.
  3. Согласуйте замену по смыслу, а не только по совпадению имени API.
  4. Отдельно разберите display-capture и сохранение политики media.
  5. Пройдите положительные и отрицательные сценарии в готовой тестовой поставке.
  6. Зафиксируйте непроверенные платформы и условия выпуска обновления.

В анонсе есть и сообщения об ускорении отдельных операций. Они не заменяют проверку вашего приложения и не доказывают собственный выигрыш времени запуска. Сначала восстановите ожидаемое поведение, затем сравнивайте выбранную операцию в одинаковых условиях, если производительность входит в задачу.

При разработке настольного приложения карта действий помогает согласовать приёмку. В проверке защиты рассматривайте границы доступов, а при доработке программы сохраняйте условия воспроизведения старого и нового поведения. Приложения для статьи не собирались, экран не захватывался, sandbox и разрешения на сервере не менялись.

Вопросы и ответы

Почему Electron preload перестал работать после обновления?

Одна из возможных причин в Electron 45 — зависимость sandboxed preload от удалённых shims или глобальных объектов. Нужно установить место ошибки и назначение кода: сам факт обновления не доказывает эту причину для любого приложения.

Как подготовить Electron preload script к новой версии?

Проверьте реальные зависимости и подберите замену по выполняемой операции. Затем пройдите пользовательский сценарий в собранной поставке, сохраняя согласованные границы доступа.

Почему Electron screen sharing требует отдельной проверки?

В Electron 45 запрос захвата приходит как display-capture вместо прежнего media. Обработчик разрешений должен учитывать это различие и корректно обрабатывать отказ пользователя.

Нужна помощь с проектом?

Обсудим задачу и предложим решение — от сайта до SaaS и защиты.

Связаться