Как добавить собственное расширение Chrome в приложение Electron? - PullRequest
0 голосов
/ 16 ноября 2018

У меня возникли проблемы с добавлением хромированных аддонов в окно Electron BrowserWindow.

Перед созданием моего окна (и после того, как событие ready сработало), я пытаюсь добавить расширение devtools, которое требуется моему браузеру для совместного использования экрана.

BrowserWindow.addDevToolsExtension('/home/USER/.config/chromium/Default/Extensions/dkjdkjlcilokfaigbckcipicchgoazeg/1.5_0');

Я следовал этому Электронному справочнику , и это сработало для их примера (добавив инструмент разработки реагирования). Когда я делаю то же самое с моим собственным расширением Chrome, у меня появляется эта ошибка:

[4735:1116/163422.268391:ERROR:CONSOLE(7701)] "Skipping extension with invalid URL: chrome-extension://extension-name", source: chrome-devtools://devtools/bundled/shell.js (7701)

На самом деле я не понимаю, почему указанная ошибка является «недействительным URL», так как я делаю то же самое / процесс с аддоном реакции без проблем. Я тоже понятия не имею, что делать. Возможно ли, что мой Chrome аддон не совместим с Electron?

Ответы [ 3 ]

0 голосов
/ 15 марта 2019

Хотя существует зарегистрированный метод для регистрации нормального расширения , в большинстве случаев это мало что даст, так как Electron поддерживает только подмножество доступности из chrome.* API-интерфейсов (, видимо, только то, что требуется Spectron и Devtron ), и, как они недавно заявили , они неесть какие-либо планы по поддержке API расширений Chrome в полном объеме.

0 голосов
/ 11 августа 2019

Поддержка расширений Chromium в Electron сейчас активно работает над .Поддержка еще не завершена, но проблема GitHub , похоже, регулярно публикуется.

Перекрещены пальцы!

Текущий запрос на открытие открыт для 'Достаточно расширений [api], чтобы загрузить простое ... расширение'

0 голосов
/ 17 ноября 2018

Похоже, вы пытаетесь добавить обычное расширение Chrome вместо расширения Dev Tools.

Метод BrowserWindow.addExtension(path) предназначен для обычных расширений Chrome:

BrowserWindow.addExtension(path)

  • path Строка

Добавляет расширение Chrome , расположенное в path, и возвращает имя расширения.

Метод также не вернется, если манифест расширения отсутствует или не заполнен.

Примечание: Этот API-интерфейс не может быть вызван до отправки события ready модуля app.

- https://electronjs.org/docs/api/browser-window#browserwindowaddextensionpath

И наоборот, метод BrowserWindow.addDevToolsExtension(path) предназначен для расширений Dev Tools:

BrowserWindow.addDevToolsExtension(path)

  • path Строка

Добавляет расширение DevTools , расположенное в path, и возвращает имя расширения.

Расширение будет запомнено, поэтому вам нужно вызывать этот API только один раз, этот API не предназначен для программирования. Если вы попытаетесь добавить уже загруженное расширение, этот метод не вернется, а вместо этого запишет предупреждение на консоль.

Метод также не вернется, если манифест расширения отсутствует или не заполнен.

Примечание: Этот API-интерфейс не может быть вызван до отправки события ready модуля app.

- https://electronjs.org/docs/api/browser-window#browserwindowadddevtoolsextensionpath

Обратите внимание, что в обоих случаях вам нужно дождаться отправки события ready из модуля app:

const { BrowserWindow, app } = require('electron')

let mainWindow = null

function main() {
  BrowserWindow.addExtension('/path/to/extension')
  mainWindow = new BrowserWindow()
  mainWindow.loadURL('https://google.com')
  mainWindow.on('close', event => {
    mainWindow = null
  })
}

app.on('ready', main)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...