如何向我的 Electron 应用程序添加自定义 chrome 扩展?

新手上路,请多包涵

我在将 chrome 插件添加到我的 Electron BrowserWindow 中时遇到了一些麻烦。

在创建我的窗口之前(以及在 ready 事件触发之后),我尝试添加我的浏览器需要进行屏幕共享的开发工具扩展。

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

我遵循了这个 Electron 指南,它适用于他们的示例(添加反应开发工具)。当我用我自己的 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 不兼容吗?

原文由 jineb92 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

看起来您正在尝试添加常规 Chrome 扩展程序而不是开发工具扩展程序。

BrowserWindow.addExtension(path) 方法适用于常规的 Chrome 扩展:

BrowserWindow.addExtension(path)

  • path 字符串

添加位于 pathChrome 扩展程序,并返回扩展程序的名称。

如果扩展的清单丢失或不完整,该方法也不会返回。

注意: 在发出 ready app 事件之前不能调用此 API。

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

相反, BrowserWindow.addDevToolsExtension(path) 方法用于开发工具扩展:

BrowserWindow.addDevToolsExtension(path)

  • path 字符串

添加位于 path 的 DevTools 扩展,并返回扩展名。

扩展会被记住,所以你只需要调用一次这个API,这个API不用于编程。如果您尝试添加已加载的扩展,此方法将不会返回,而是向控制台记录警告。

如果扩展的清单丢失或不完整,该方法也不会返回。

注意: 在发出 ready app 事件之前不能调用此 API。

- 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)

原文由 user4639281 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题