С помощью консоли.log() в приложении Electron


Как я могу записывать данные или сообщения на консоль в моем электронном приложении?

этот действительно базовый мир hello открывает инструменты dev по умолчанию, я не могу использовать console.log('hi'). Есть ли альтернатива для электрона?

главная.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;
  });
});
8 77

8 ответов:

console.log работает, но где он регистрируется, зависит от того, вызываете ли вы его из основного процесса или процесса визуализации.

если вы вызываете его из процесса визуализации (т. е. JavaScript, который включен из вашего index.html file)он будет зарегистрирован в окне dev tools.

если вы вызываете его из основного процесса (т. е. в main.js) он будет работать так же, как и в узле - он будет входить в окно терминала. Если вы начинаете свой электронный процесс с Терминал с помощью electron . вы можете увидеть ваши console.log звонки от основного процесса.

вы также можете добавить переменную окружения в Windows:

ELECTRON_ENABLE_LOGGING=1

это вывод на консоль сообщения на ваш терминал.

существует другой способ входа в консоль изнутри процесса визуализации. Учитывая, что это электрон, вы можете получить доступ к собственным модулям узла. Это включает в себя console модуль.

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

когда этот код запускается изнутри процесса визуализации, вы получите Hello World! в терминале, из которого вы запускали Электрон.

см.https://nodejs.org/api/console.html для дальнейшей документации по console модуль.

еще одна возможность-доступ к основной консоли процесса с помощью remote.getGlobal(name):

const con = require('electron').remote.getGlobal('console')
con.log('This will be output to the main process console.')

добавляя к ответу М. Дамиана, вот как я настроил его, чтобы я мог получить доступ к консоли основного процесса из любого рендерера:

в главном приложении добавить:

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

в любом рендере вы можете добавить:

const remote = require('electron').remote;
const app = remote.app;
...
app.console.log('This will output to the main process console.');
process.stdout.write('your output to command prompt console or node js ')

Это продолжение ответа cscsandy5 для некоторой дополнительной информации, информации от здесь

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

этот код отлично подходит для простого вывода простого отладочного сообщения в окно терминала, из которого вы запустили приложение electron, и это то, что консоль.журнал строится сверху.

вот пример фрагмента (на основе tutorialspoint electon tutorial) сценария jQuery, который будет писать Привет терминалу при каждом нажатии кнопки (предупреждение: вам нужно добавить свои собственные разрывы строк в строк!)

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

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

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

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

вы можете использовать пакет npm electron-log https://www.npmjs.com/package/electron-log

он будет регистрировать вашу ошибку, предупреждать, информацию, подробные, отладочные, глупые выходы в вашем собственном журнале ОС.

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

log.info('Hello, log');
log.error('Damn it, an error');