2016-02-13 17:20:34 +00:00
|
|
|
# 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][memory-management] (Anglais)
|
|
|
|
* [Portée d'une Variable][variable-scope] (Anglais)
|
|
|
|
|
|
|
|
Si vous voulez corriger rapidement le problème, vous pouvez rendre les variables
|
|
|
|
globales en changeant votre code de ça :
|
|
|
|
|
|
|
|
```javascript
|
2016-10-03 03:47:16 +00:00
|
|
|
app.on('ready', function () {
|
|
|
|
var tray = new Tray('/path/to/icon.png')
|
2016-02-13 17:20:34 +00:00
|
|
|
})
|
|
|
|
```
|
|
|
|
|
|
|
|
à ça :
|
|
|
|
|
|
|
|
```javascript
|
2016-10-03 03:47:16 +00:00
|
|
|
var tray = null
|
|
|
|
app.on('ready', function () {
|
|
|
|
tray = new Tray('/path/to/icon.png')
|
2016-02-13 17:20:34 +00:00
|
|
|
})
|
|
|
|
```
|
|
|
|
|
|
|
|
## 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 :
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
// Dans le processus principal.
|
|
|
|
var mainWindow = new BrowserWindow({
|
|
|
|
webPreferences: {
|
|
|
|
nodeIntegration: false
|
|
|
|
}
|
2016-10-03 03:47:16 +00:00
|
|
|
})
|
2016-02-13 17:20:34 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
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 :
|
|
|
|
|
|
|
|
```html
|
|
|
|
<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`][electron-module]
|
|
|
|
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` :
|
|
|
|
|
|
|
|
```javascript
|
2016-10-03 03:47:16 +00:00
|
|
|
console.log(require.resolve('electron'))
|
2016-02-13 17:20:34 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
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.
|
|
|
|
|
|
|
|
[memory-management]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
|
|
|
|
[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx
|
|
|
|
[electron-module]: https://www.npmjs.com/package/electron
|