开发者工具扩展
Electron 支持 Chrome 开发者工具扩展,可用于扩展 Chrome 开发者工具的功能,以调试流行的 Web 框架。
使用工具加载开发者工具扩展
加载开发者工具扩展的最简单方法是使用第三方工具自动执行此过程。electron-devtools-installer 是一个常用的 NPM 包,可以做到这一点。
手动加载开发者工具扩展
如果您不想使用工具方法,也可以手动完成所有必要的操作。 要在 Electron 中加载扩展程序,您需要通过 Chrome 下载它,找到其文件系统路径,然后通过调用 ses.loadExtension
API 将其加载到您的 Session 中。
以 React 开发者工具 为例
-
在 Google Chrome 中安装扩展程序。
-
导航到
chrome://extensions
,找到其扩展 ID,它是一个哈希字符串,如fmkadmapgofadopljbjfkapdkoienihi
。 -
找出 Chrome 用于存储扩展程序的文件系统位置
- 在 Windows 上,它是
%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions
; - 在 Linux 上,它可能是
~/.config/google-chrome/Default/Extensions/
~/.config/google-chrome-beta/Default/Extensions/
~/.config/google-chrome-canary/Default/Extensions/
~/.config/chromium/Default/Extensions/
- 在 macOS 上,它是
~/Library/Application Support/Google/Chrome/Default/Extensions
。
- 在 Windows 上,它是
-
将扩展程序的位置传递给
ses.loadExtension
API。 对于 React 开发者工具v4.9.0
,它看起来像这样const { app, session } = require('electron')
const path = require('node:path')
const os = require('node:os')
// on macOS
const reactDevToolsPath = path.join(
os.homedir(),
'/Library/Application Support/Google/Chrome/Default/Extensions/fmkadmapgofadopljbjfkapdkoienihi/4.9.0_0'
)
app.whenReady().then(async () => {
await session.defaultSession.loadExtension(reactDevToolsPath)
})
注意
loadExtension
返回一个带有 Extension 对象 的 Promise,其中包含有关已加载扩展程序的元数据。此 Promise 需要在加载页面之前解析(例如,使用await
表达式)。否则,无法保证加载扩展程序。- 不能在
app
模块的ready
事件发出之前调用loadExtension
,也不能在内存中(非持久)会话中调用它。 - 如果您希望加载扩展程序,则必须在每次启动应用程序时调用
loadExtension
。
移除开发者工具扩展
您可以将扩展程序的 ID 传递给 ses.removeExtension
API,将其从您的 Session 中移除。加载的扩展程序不会在应用程序启动之间持久化。
开发者工具扩展支持
Electron 仅支持 一组有限的 chrome.*
API,因此使用幕后不支持的 chrome.*
API 的扩展程序可能无法正常工作。
以下开发者工具扩展程序已测试可在 Electron 中工作
- Ember Inspector
- React 开发者工具
- Backbone Debugger
- jQuery Debugger
- AngularJS Batarang
- Vue.js devtools
- Cerebral Debugger
- Redux DevTools Extension
- MobX 开发者工具
如果开发者工具扩展程序无法工作,我该怎么办?
首先,请确保扩展程序仍在维护中,并且与最新版本的 Google Chrome 兼容。 我们无法为不受支持的扩展程序提供额外支持。
如果扩展程序在 Chrome 上工作,但在 Electron 上不工作,请在 Electron 的 问题跟踪器 中提交错误,并描述扩展程序的哪个部分没有按预期工作。