2015-08-01 28 views
58

में console.log() का उपयोग करके मैं अपने इलेक्ट्रॉन ऐप में कंसोल पर डेटा या संदेश कैसे लॉग कर सकता हूं?इलेक्ट्रॉन ऐप

यह वास्तव में मूल हैलो दुनिया डिफ़ॉल्ट रूप से देव उपकरण खोलती है, क्योंकि मैं 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; 
    }); 
}); 

उत्तर

71

console.log काम करता है, लेकिन जहां यह करने के लिए लॉग कि क्या आप यह मुख्य प्रक्रिया या रेंडरर प्रक्रिया से फोन पर निर्भर करता है।

यदि आप इसे रेंडरर प्रक्रिया से कॉल करते हैं (यानी जावास्क्रिप्ट जो आपके index.html फ़ाइल से शामिल है) यह देव उपकरण विंडो में लॉग इन होगा।

यदि आप इसे मुख्य प्रक्रिया से कहते हैं (यानी main.js में) यह उसी तरह काम करेगा जैसा यह नोड में करता है - यह टर्मिनल विंडो पर लॉग जाएगा। यदि आप electron . का उपयोग कर टर्मिनल से अपनी इलेक्ट्रॉन प्रक्रिया शुरू कर रहे हैं तो आप वहां मुख्य प्रक्रिया से console.log कॉल देख सकते हैं। अपने टर्मिनल के लिए

ELECTRON_ENABLE_LOGGING=1 

हो जाएगा ताकि उत्पादन सांत्वना संदेशों:

+1

क्या मैं रेंडरर प्रक्रिया से मुख्य प्रक्रिया में console.log() 'कर सकता हूं? –

+1

@FandiSusanto, आप ipcRenderer मॉड्यूल का उपयोग अपनी मुख्य प्रक्रिया में संदेश भेजने के लिए और फिर, console.log() के अंदर कर सकते हैं। – arthursfreire

+10

उत्पादन मोड में क्या अबाउट है, मुख्य प्रक्रिया में 'console.log() 'क्या होगा –

25

तुम भी खिड़कियों में एक वातावरण चर जोड़ सकते हैं।

+0

मुझे इस वातावरण चर सेट होने तक कंसोल में कोई संदेश नहीं मिला। – DVK

+0

[डॉक्स] (https://github.com/electron/electron/blob/master/docs/api/environment-variables.md) कहता है कि इसे 'सत्य' पर सेट किया जाना चाहिए और इसे 'सत्य' पर सेट करना चाहिए कंसोल में क्रोम के आंतरिक लॉगिंग को मुद्रित करता है ", जो ओपी चाहता है वह नहीं है। – pushkin

11

रेंडरर प्रक्रिया के अंदर से कंसोल पर लॉगिंग का एक और तरीका है। यह इलेक्ट्रॉन है, आप नोड के मूल मॉड्यूल तक पहुंच सकते हैं। इसमें console मॉड्यूल शामिल है।

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

जब यह कोड रेंडरर प्रक्रिया अंदर से चलाया जाता है, आप टर्मिनल आप से इलेक्ट्रॉन भाग गया में Hello World! मिल जाएगा।

console मॉड्यूल पर आगे के दस्तावेज़ के लिए https://nodejs.org/api/console.html देखें।

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

में: अपने मुख्य अनुप्रयोग ऐड में

:

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

हालांकि यह कोड समस्या को हल करने में मदद कर सकता है, यह _why_ और/या _how_ को प्रश्न का उत्तर नहीं देता है। इस अतिरिक्त संदर्भ को प्रदान करने से इसके दीर्घकालिक मूल्य में काफी सुधार होगा। स्पष्टीकरण जोड़ने के लिए कृपया अपना उत्तर संपादित करें, जिसमें सीमाएं और मान्यताओं को लागू किया गया है। –

1

एम डेमियन के जवाब में जोड़ा जा रहा है, तो यहां मैं इसे सेट अप तो मैं किसी भी रेंडरर से मुख्य प्रक्रिया के कंसोल यहां पहुंच सकता है कोई भी रेंडरर जो आप जोड़ सकते हैं:

const remote = require('electron').remote; 
const app = remote.app; 
... 
app.console.log('This will output to the main process console.'); 
5

फिर भी एक और संभावनाका उपयोग कर मुख्य प्रक्रिया कंसोल तक पहुंच रही है:

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

यह बहुत अच्छा काम करता है, लेकिन हम पूरे कंसोल आउटपुट को कैसे पकड़ सकते हैं; यानी - एक विशेष समारोह को कॉल किए बिना; ऐसे अपवाद और त्रुटियां भी आउटपुट हैं? – Derrick

+1

डेरिक: पर्यावरण परिवर्तनीय 'ELECTRON_ENABLE_LOGGING = 1' सेट करने का प्रयास करें (डीजेबी का जवाब देखें) – raphinesse

2

यह एक इस कोड को आप शुरू की बस टर्मिनल विंडो के लिए एक सरल डिबग संदेश outputting के लिए अच्छा काम करता है से here

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

कुछ अतिरिक्त जानकारी के लिए cscsandy5 का जवाब, जानकारी के लिए अनुवर्ती है इलेक्ट्रॉन ऐप से और यह है कि console.log किस पर बना है।

यहां एक 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); 
}); 
-1

संस्करण 1.17 के बाद से वहाँ console.log से एक तेज़ तरीका है:

process.stdout.write 

इस संस्करण में तेजी से होता है और 1.17 के बाद से वहाँ भी एक नया लांच config विकल्प, "outputCapture": "std" जो डिबग एडाप्टर बता दिखाने के लिए जाएगा सेंट डीबग कंसोल में डाउट/stderr आउटपुट।
अधिक जानकारी के लिए here दस्तावेज़ीकरण।

+1

यह सटीक उत्तर कुछ अन्य उत्तरों में था ... क्या आपको लगता है कि आपने कुछ अतिरिक्त जोड़ा है? – Jeff

+0

हां। लेकिन इसे मेरे जवाब से निकालने के लिए थोड़ा समझ की जरूरत है। इसे फिर से पढ़ें और बुद्धिमान @ जेफ बनें –

0

आप NPM पैकेज इलेक्ट्रॉन लोग इन https://www.npmjs.com/package/electron-log

यह अपने त्रुटि लॉग करेगा उपयोग कर सकते हैं, चेतावनी दी है, जानकारी, वर्बोज़, डिबग, अपनी मूल ओएस लॉग में मूर्खतापूर्ण आउटपुट।

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

log.info('Hello, log'); 
log.error('Damn it, an error'); 
संबंधित मुद्दे