How can I add a custom chrome extension to my Electron app?
It looks like you're trying to add a regular Chrome extension instead of a Dev Tools extension.
The BrowserWindow.addExtension(path)
method is for regular Chrome extensions:
BrowserWindow.addExtension(path)
path
StringAdds Chrome extension located at
path
, and returns extension's name.The method will also not return if the extension's manifest is missing or incomplete.
Note: This API cannot be called before the
ready
event of theapp
module is emitted.- https://electronjs.org/docs/api/browser-window#browserwindowaddextensionpath
Conversely, the BrowserWindow.addDevToolsExtension(path)
method is for Dev Tools extensions:
BrowserWindow.addDevToolsExtension(path)
path
StringAdds DevTools extension located at
path
, and returns extension's name.The extension will be remembered so you only need to call this API once, this API is not for programming use. If you try to add an extension that has already been loaded, this method will not return and instead log a warning to the console.
The method will also not return if the extension's manifest is missing or incomplete.
Note: This API cannot be called before the
ready
event of theapp
module is emitted.- https://electronjs.org/docs/api/browser-window#browserwindowadddevtoolsextensionpath
Note that in both cases you need to wait for the ready
event from the app
module to be emitted:
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)
Support for Chromium extensions in Electron is actively being worked on at the moment. The support isn't complete yet, but the GitHub issue seems to have regular updates being posted.
Fingers crossed!
A current pull request is open for 'just enough extensions [api] to load a simple ... extension'