شرح - electron tutorial




استخدام console.log() في تطبيق Electron (8)

كيف يمكنني تسجيل البيانات أو الرسائل إلى وحدة التحكم في تطبيق Electron الخاص بي؟

يفتح عالم الترحيب الأساسي هذا أدوات التطوير افتراضيًا ، وأنا غير قادر على استخدام console.log('hi') . هل هناك بديل للإلكترون؟

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 إلى محطة" (أو عمليات بحث مماثلة.

لأي شخص يتطلع إلى الحصول على قدر أكبر من السيطرة على ما يتم إخراجه إلى الجهاز الطرفي ، يمكنك استخدام webContents.on ("وحدة التحكم") مثل ذلك:

mainWindow.webContents.on('console-message', (event, level, message, line, sourceId) => {
      console.log(message + " " +sourceId+" ("+line+")");
});

نرى:

وثائق محتوى الويب

إدخال محتويات الويب على مستندات BrowserWindow


إضافة إلى إجابة M. Damian ، إليك كيفية إعداده حتى أتمكن من الوصول إلى وحدة التحكم في العملية الرئيسية من أي عارض:

أضف تطبيقك الرئيسي:

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.');

كل ما كتبه أليكس وارن صحيح. المهم هنا هو كيف يتم بدء الإلكترون. إذا كنت تستخدم البرنامج النصي القياسي في ملف package.json ، فلن يعمل. لجعل console.log() العمل console.log() النص القديم بهذا النص الجديد.

قديم:

"scripts": {
    "start": "electron ."
}

جديد:

"scripts": {
    "start": ".\\node_modules\\electron\\dist\\electron.exe ."
}

الآن يتم عرض جميع المكالمات console.log() في المحطة أيضا.


هذا هو ما أستخدمه:

let mainWindow // main window reference, you should assign it below 'mainWindow = new BrowserWindow'

function log(...data) {
  mainWindow.webContents.executeJavaScript("console.log('%cFROM MAIN', 'color: #800', '" + data + "');");
}

مثال على استخدام (مثل console.log ):

log('Error', { msg: 'a common log message' })
log('hello')

المصدر: https://github.com/fuse-box/fuse-box-electron-seed/tree/master/src/main في ملف logger.js ، هنا يمكنك رؤية حالة استخدام حقيقية.


هناك إمكانية أخرى تتمثل في الوصول إلى وحدة التحكم في العملية الرئيسية باستخدام remote.getGlobal(name) :

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

هناك طريقة أخرى لتسجيل الدخول إلى وحدة التحكم من داخل عملية العارض. نظرًا لأن هذا هو Electron ، يمكنك الوصول إلى وحدات Node الأصلية. وهذا يشمل 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 .


يمكنك استخدام الحزمة الإلكترونية لسجل npm https://www.npmjs.com/package/electron-log

سيقوم بتسجيل الخطأ الخاص بك ، تحذير ، معلومات ، مطوّل ، تصحيح ، مخرجات سخيفة في سجل نظام التشغيل الأصلي.

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

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

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