Comment puis-je enregistrer des données ou des messages sur la console dans mon application Electron?
Ce hello world vraiment basique ouvre les outils de développement par défaut, je ne peux pas l'utiliser console.log('hi')
. Existe-t-il une alternative à Electron?
main.js
var app = require('app');
var BrowserWindow = require('browser-window');
require('crash-reporter').start();
var mainWindow = null;
app.on('window-all-closed', function() {
// Mac OS X - close is done explicitly with Cmd + Q, not just closing windows
if (process.platform != 'darwin') {
app.quit();
}
});
app.on('ready', function(){
mainWindow = new BrowserWindow({ width: 800, height: 600});
mainWindow.loadUrl('file://' + __dirname + '/index.html');
mainWindow.openDevTools();
mainWindow.on('closed', function(){
mainWindow = null;
});
});
console.log()
au processus principal du processus de rendu?./path/to/release/MyProgram.app/Contents/MacOS/MyProgram
. Cela exécutera le binaireMyProgram
et vous permettra de visualiser lesconsole.log
événements de processus dans un terminal.app.relaunch()
etapp.exit(0)
???Vous pouvez également ajouter une variable d'environnement dans Windows:
Cela affichera les messages de la console sur votre terminal.
la source
true
et que le définir surtrue
"imprime la journalisation interne de Chrome sur la console", ce qui n'est pas ce que OP souhaite.ELECTRON_ENABLE_LOGGING=1
aussi avec . Et quant à ce que veut l'OP, qu'est-ce que c'est alors? Jetez un œil à l' essentiel suivant pour voir l'effet.set ELECTRON_ENABLE_LOGGING=true
Il existe une autre façon de se connecter à la console depuis le processus de rendu. Étant donné qu'il s'agit d'Electron, vous pouvez accéder aux modules natifs de Node. Cela inclut le
console
module.Lorsque ce code est exécuté depuis l'intérieur du processus de rendu, vous accédez
Hello World!
au terminal à partir duquel vous avez exécuté Electron.Voir https://nodejs.org/api/console.html pour plus de documentation sur le
console
module.la source
Une autre possibilité est d'accéder à la console de processus principale en utilisant
remote.getGlobal(name)
:la source
ELECTRON_ENABLE_LOGGING=1
(voir la réponse de deejbee)En plus de la réponse de M. Damian, voici comment je l'ai configuré pour pouvoir accéder à la console du processus principal à partir de n'importe quel moteur de rendu.
Dans votre application principale, ajoutez:
Dans n'importe quel moteur de rendu, vous pouvez ajouter:
la source
la source
Vous pouvez utiliser le package npm electron-log https://www.npmjs.com/package/electron-log
Il enregistrera votre erreur, avertissement, info, verbose, débogage, sorties stupides dans votre journal natif du système d'exploitation.
la source
Ceci est un suivi de la réponse de cscsandy5 pour quelques informations supplémentaires, info d' ici
Ce code fonctionne très bien pour simplement envoyer un simple message de débogage dans la fenêtre du terminal à partir de laquelle vous avez lancé l'application electron et c'est sur quoi console.log est construit.
Voici un exemple d'extrait de code (basé sur le tutoriel tutorialspoint electon) d'un script jQuery qui écrira bonjour sur le terminal à chaque fois que vous appuyez sur le bouton (attention: vous devez ajouter vos propres sauts de ligne dans les chaînes de sortie!)
la source
Tout ce qu'Alex Warren a écrit est vrai. Il est important de savoir comment Electron est démarré. Si vous utilisez le script standard dans le fichier package.json , cela ne fonctionnera pas. Faire
console.log()
fonctionner, remplacez l'ancien script par ce nouveau.Le vieux:
Nouveau:
Désormais, tous les
console.log()
appels sont également affichés dans le terminal.la source
C'est ce que j'utilise:
Exemple d'utilisation (identique à
console.log
):Source: https://github.com/fuse-box/fuse-box-electron-seed/tree/master/src/main dans le fichier logger.js, ici vous pouvez voir un cas d'utilisation réel.
la source
Après quelques recherches, voici ma compréhension:
Code
(1) main.js
Remarque: quelle utilisation
openDevTools
pour ouvrirElectron Dev Tools
(2) render.js
(3)
render.js
est appelé par:index.html
console.log
Logique de sortie
main process
=NodeJS process
= iciElectron UI process
console.log
inmain.js
affichera le journal icirender process
console.log
inrender.js
affichera le journal iciExemple de capture d'écran
./node_modules/.bin/electron .
eletron-builder
/path_to_your_packaged_mac_app/xxx.app/Contents/MacOS/yourBinaryExecutable
export ELECTRON_ENABLE_LOGGING=true
, sortierender.js
console.log ÉGALEMENT vers lemain process
terminalla source
Désolé de créer un ancien fil de discussion, mais c'est le meilleur résultat pour "comment afficher console.log vers le terminal" (ou des recherches similaires.
Pour ceux qui cherchent à gagner un peu plus de contrôle sur ce qui est sorti sur le terminal, vous pouvez utiliser webContents.on ('console-message') comme ceci:
Voir:
Documentation webContents
Entrée webContents sur la documentation BrowserWindow
la source
console.log()
fonctionnera bien pour le débogage. Comme leelectron
est construit au-dessus du navigateur, il prend enDevTools
charge vous pouvez utiliser devtools à des fins de débogage. Cependant, il existe un comportement hystérique de laconsole.log()
méthode. Lorsque vous appelez l'applicationconsole.log()
frommain process
of electron, elle s'affiche dans la fenêtre du terminal à partir de laquelle vous venez de lancer l'application et lorsque vous l'appelez,renderer process
elle s'affiche sur la console DevTools.la source
Avec cela, vous pouvez utiliser les outils de développement de la fenêtre principale du navigateur pour voir les journaux
L'exemple
logEverywhere('test')
sera affiché// test
dans le panneau de la console des outils de développement de la fenêtre principale du navigateurVous devrez peut-être améliorer cette méthode pour accepter plusieurs arguments (vous pouvez le faire avec l'opérateur de propagation par es6)
la source
Eh bien, nous sommes en 2019 et je ne peux pas croire que personne n'ait mentionné cette astuce dans toutes les réponses ci-dessus. Ok, alors, que diriez-vous de vous connecter directement à la console du navigateur directement à partir du principal? J'ai fourni ma réponse ici: https://stackoverflow.com/a/58913251/8764808 Jetez un coup d'œil.
la source