Utilisation de la console.log() dans L'application Electron

Comment puis-je enregistrer des données ou des messages sur la console de mon application Electron?

Ce Hello world vraiment basique ouvre les outils de développement par défaut, par Je ne peux pas utiliser console.log('hi'). Y a-t-il une alternative pour Electron?

Principal.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;
  });
});
77
demandé sur Yan Foto 2015-08-01 10:22:15

8 réponses

console.log fonctionne, mais où il se connecte dépend si vous l'appelez à partir du processus principal ou du processus de rendu.

Si vous l'appelez à partir du processus de rendu (C'est-à-dire JavaScript inclus dans votre fichier index.html), il sera connecté à la fenêtre dev tools.

Si vous l'appelez à partir du processus principal (c'est-à-dire dans main.js), il fonctionnera de la même manière que dans Node - il se connectera à la fenêtre du terminal. Si vous démarrez votre processus D'électrons à partir du Terminal en utilisant electron ., vous pouvez voir vos appels console.log du processus principal là-bas.

97
répondu Alex Warren 2015-08-01 08:36:08

Vous pouvez également ajouter une variable d'environnement dans windows:

ELECTRON_ENABLE_LOGGING=1

Cela affichera les messages de la console sur votre terminal.

28
répondu deejbee 2016-12-02 10:13:23

Il existe une autre façon de se connecter à la console depuis l'intérieur du processus de rendu. Étant donné que C'est Electron, vous pouvez accéder aux modules natifs de Node. Cela inclut le module console.

var nodeConsole = require('console');
var myConsole = new nodeConsole.Console(process.stdout, process.stderr);
myConsole.log('Hello World!');

Lorsque ce code est exécuté à partir du processus de rendu, vous obtiendrez Hello World! dans le terminal à partir duquel vous avez exécuté Electron.

Voir https://nodejs.org/api/console.html pour plus de documentation sur les console module.

14
répondu M. Damian Mulligan 2016-12-30 14:50:11

Une autre possibilité est d'accéder à la console de processus principale en utilisant remote.getGlobal(name):

const con = require('electron').remote.getGlobal('console')
con.log('This will be output to the main process console.')
5
répondu raphinesse 2017-07-17 16:08:41

En ajoutant à la réponse de M. Damian, voici comment je l'ai configuré pour pouvoir accéder à la console du processus principal depuis n'importe quel moteur de rendu:

Dans votre application principale ajouter:

const electron = require('electron');
const app = electron.app;
const console = require('console');
...
app.console = new console.Console(process.stdout, process.stderr);

Dans n'importe quel moteur de rendu, vous pouvez ajouter:

const remote = require('electron').remote;
const app = remote.app;
...
app.console.log('This will output to the main process console.');
3
répondu David Figatner 2017-05-18 04:15:46
process.stdout.write('your output to command prompt console or node js ')
2
répondu cscsandy5 2017-04-05 13:15:17

Ceci est un suivi de la réponse de cscsandy5 pour des informations supplémentaires, des informations de ici

process.stdout.write('your output to command prompt console or node js ')

Ce code fonctionne très bien pour simplement sortir un simple message de débogage à la fenêtre du terminal à partir de laquelle vous avez lancé l'application electron et est quelle console.le journal est construit sur le dessus de.

Voici un exemple d'extrait (basé sur tutorialspoint electon tutoriel) d'un script jQuery qui écrira hello au terminal chaque fois que le bouton est pressé (attention: vous devez ajouter votre propre sauts de ligne dans les chaînes de sortie!)

let $ = require('jquery')
var clicks = 0;

$(function() {
    $('#countbtn').click(function() {
        //output hello <<<<<<<<<<<<<<<<<<<<<<<
        process.stdout.write('hello')

        $('#click-counter').text(++clicks);
    });

    $('#click-counter').text(clicks);
});
2
répondu Harrison Telfer 2017-08-02 16:41:27

Vous pouvez utiliser le mécanisme national de prévention paquet d'électrons-log https://www.npmjs.com/package/electron-log

Il enregistrera vos sorties error, warn, info, verbose, debug, silly dans votre journal du système d'exploitation natif.

var log = require('electron-log');

log.info('Hello, log');
log.error('Damn it, an error');
1
répondu StefanSL 2018-02-22 09:17:58