4 KiB
Electron FAQ
Quand est mise à jour la version de Chrome utilisée par Electron ?
La version de Chrome qu'utilise Electron est en général mise à jour une ou deux semaines après la sortie d'une nouvelle version stable de Chrome.
Etant donné que nous n'utilisons que les versions stables de Chrome, si un fix important est en beta ou en dev, nous l'intégrerons à la version que nous utilisons.
Quand est mise à jour la version de Node.js utilisée par Electron ?
Quand une nouvelle version de Node.js sort, nous attendons en général un mois avant de mettre à jour celle que nous utilisons dans Electron. Ceci afin d'éviter les bugs introduits par les nouvelles versions, ce qui arrive très souvent.
Les nouvelles fonctionnalités de Node.js arrivant la plupart du temps via V8, et Electron utilisant le V8 du navigateur Chrome, la nouvelle fonctionnalité JavaScript de la nouvelle version de Node.js est bien souvent déjà dans Electron.
La fenêtre/barre d'état de mon application disparait après quelques minutes.
Cela se produit quand la variable qui est utilisée pour stocker la fenêtre/barre d'état est libérée par le ramasse-miettes.
Nous vous recommandons de lire les articles suivants quand vous rencontrez le problème :
- Management de la Mémoire (Anglais)
- Portée d'une Variable (Anglais)
Si vous voulez corriger rapidement le problème, vous pouvez rendre les variables globales en changeant votre code de ça :
app.on('ready', function () {
var tray = new Tray('/path/to/icon.png')
})
à ça :
var tray = null
app.on('ready', function () {
tray = new Tray('/path/to/icon.png')
})
Je n'arrive pas à utiliser jQuery/RequireJS/Meteor/AngularJS dans Electron.
A cause de l'intégration de Node.js dans Electron, certains mots-clés sont
insérés dans la DOM, comme module
, exports
, require
. Ceci pose des
problèmes pour certaines bibliothèques qui utilisent les mêmes mots-clés.
Pour résoudre ce problème, vous pouvez désactiver l'intégration de node dans Electron :
// Dans le processus principal.
var mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: false
}
})
Mais si vous voulez garder la possibilité d'utiliser Node.js et les APIs Electron, vous devez renommer les mots-clés dans la page avant d'inclure d'autres bibliothèques :
<head>
<script>
window.nodeRequire = require;
delete window.require;
delete window.exports;
delete window.module;
</script>
<script type="text/javascript" src="jquery.js"></script>
</head>
require('electron').xxx
is undefined.
Lors de l'utilisation des modules d'Electron, vous pouvez avoir une erreur :
> require('electron').webFrame.setZoomFactor(1.0);
Uncaught TypeError: Cannot read property 'setZoomLevel' of undefined
Ceci se produit quand vous avez le module npm electron
d'installé, soit en local ou en global, ce qui a pour effet d'écraser les
modules de base d'Electron.
Vous vérifiez que vous utilisez les bons modules, vous pouvez afficher le
chemin du module electron
:
console.log(require.resolve('electron'))
et vérifier si il est de la forme :
"/path/to/Electron.app/Contents/Resources/atom.asar/renderer/api/lib/exports/electron.js"
S'il est de la forme node_modules/electron/index.js
, vous devez supprimer le
module npm electron
, ou le renommer.
npm uninstall electron
npm uninstall -g electron
Si vous utilisez le module de base mais que vous continuez d'avoir
l'erreur, ça vient probablement du fait que vous utilisez le module dans le
mauvais processus. Par exemple electron.app
peut uniquement être utilisé
dans le processus principal, tandis que electron.webFrame
est uniquement
disponible dans le processus d'affichage.