Les extension des DevTools
Electron prend en charge les extensions de Chrome DevTools , celles ci pouvant être utilisées pour étendre les capacités des devtools de Chrome pour le débogage des framework les plus populaires.
Chargement d'une extension DevTools
La façon la plus simple de charger une extension DevTools est d'utiliser un outil tiers pour automatiser à votre place le processus. Le package electron-devtools-installer disponible via NPM correspond exactement à cela.
Chargement manuel d'une extension des DevTools
Dans le cas où vous ne voudriez pas utiliser d'outil , vous pourrez toujours effectuer toutes les opérations nécessaires à la main. To load an extension in Electron, you need to download it via Chrome, locate its filesystem path, and then load it into your Session by calling the ses.loadExtension
API.
Exemple utilisant React Developer Tools :
-
Installez l'extension dans Google Chrome.
-
Accédez à
chrome://extensions
et trouvez son ID d’extension, qui est une chaîne de hachage commefmkadmapgofadopljbjfkapdkoienihi
. -
Découvrez l'emplacement utilisé par Chrome dans le système de fichiers pour stocker les extensions :
- sous Windows, c'est
%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions
; - sous Linux, ça pourrait être :
~/.config/google-chrome/Default/Extensions/
~/.config/google-chrome-beta/Default/Extensions/
~/.config/google-chrome-canary/Default/Extensions/
~/.config/chromium/Default/Extensions/
- sur macOS c’est
~/Library/Application Support/Google/Chrome/Default/Extensions
.
- sous Windows, c'est
-
Pass the location of the extension to the
ses.loadExtension
API. Pour les outils de développement Reactv4.9.0
, cela ressemble à quelque chose comme :const { app, session } = require('electron')
const path = require('node:path')
const os = require('node:os')
// sur 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)
})
Notes:
loadExtension
returns a Promise with an Extension object, which contains metadata about the extension that was loaded. Cette promesse doit être résolue (par exemple avec une expressionawait
) avant de charger une page. Sinon il n'est pas garanti que l'extension se charge.loadExtension
ne doit pas être invoquée avant que l'évènementready
du moduleapp
ne soit émis, ni lors de sessions en mémoire (non persistantes).- Pour que l'extension soit chargée
loadExtension
devrat être invoquée à chaque démarrage de votre application.
Suppression d’une extension DevTools
You can pass the extension's ID to the ses.removeExtension
API to remove it from your Session. Les extensions chargées ne persistent s pas entre deux lancements d’application.
Support de l'extension DevTools
Electron only supports a limited set of chrome.*
APIs, so extensions using unsupported chrome.*
APIs under the hood may not work.
Les Extensions Devtools suivantes ont été testées et sont garanties fonctionner dans Electron :
- Inspecteur Ember
- Outils de développement React
- Débogueur Backbone
- Débogueur jQuery
- Batarang AngularJS
- Devtools Vue.js
- Débogueur Cerebral
- Extension DevTools Redux
- MobX Developer Tools
Que faire si une extension DevTools ne fonctionne pas ?
Tout d'abord, assurez-vous que l'extension est toujours maintenue, et qu'elle est compatible avec la dernière version de Google Chrome. Nous ne pouvons pas fournir de support supplémentaire pour les extensions non prises en charge.
Si l’extension fonctionne sur Chrome mais pas sur Electron, déposez un bogue dans le suivi des problèmes d’Electron et décrivez quelle partie de l’extension ne fonctionne pas comme prévu.