Wie kann ich Daten oder Nachrichten in meiner Electron-App an der Konsole protokollieren?
Diese wirklich einfache Hallo-Welt öffnet standardmäßig die Entwickler-Tools, da ich sie nicht verwenden kann console.log('hi')
. Gibt es eine Alternative für 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()
vom Renderer-Prozess zum Hauptprozess?./path/to/release/MyProgram.app/Contents/MacOS/MyProgram
. Dadurch wird die Binärdatei ausgeführtMyProgram
und Sie können die Prozessereignisseconsole.log
in einem Terminal anzeigen .Sie können in Windows auch eine Umgebungsvariable hinzufügen:
Dadurch werden Konsolennachrichten an Ihr Terminal ausgegeben.
quelle
true
dass dies auftrue
"Drucken der internen Protokollierung von Chrome an die Konsole" eingestellt werden sollte, was OP nicht wünscht.ELECTRON_ENABLE_LOGGING=1
. Und was das OP will, was ist es dann? Schauen Sie sich den folgenden Kern an, um den Effekt zu sehen.set ELECTRON_ENABLE_LOGGING=true
Es gibt eine andere Möglichkeit, sich innerhalb des Renderer-Prozesses an der Konsole anzumelden. Wenn dies Electron ist, können Sie auf die nativen Module von Node zugreifen. Dies beinhaltet das
console
Modul.Wenn dieser Code im Renderer-Prozess ausgeführt wird, gelangen Sie
Hello World!
in das Terminal, von dem aus Sie Electron ausgeführt haben.Weitere Dokumentation zum Modul finden Sie unter https://nodejs.org/api/console.html
console
.quelle
Eine weitere Möglichkeit ist der Zugriff auf die Hauptprozesskonsole über
remote.getGlobal(name)
:quelle
ELECTRON_ENABLE_LOGGING=1
einzustellen (siehe die Antwort vonNeben der Antwort von M. Damian habe ich Folgendes eingerichtet, damit ich von jedem Renderer aus auf die Konsole des Hauptprozesses zugreifen kann:
Fügen Sie in Ihrer Haupt-App Folgendes hinzu:
In jedem Renderer können Sie hinzufügen:
quelle
quelle
Sie können das Elektronenprotokoll des npm-Pakets https://www.npmjs.com/package/electron-log verwenden
Es protokolliert Ihre Fehler-, Warn-, Info-, ausführlichen, Debug- und albernen Ausgaben in Ihrem nativen Betriebssystemprotokoll.
quelle
Dies ist eine Fortsetzung der Antwort von cscsandy5 für einige zusätzliche Informationen, Informationen von hier
Dieser Code eignet sich hervorragend für die Ausgabe einer einfachen Debug-Nachricht an das Terminalfenster, über das Sie die Elektronen-App gestartet haben. Darauf baut console.log auf.
Hier ist ein Beispiel-Snippet (basierend auf dem Tutorialspoint electon tutorial) eines jQuery-Skripts, das bei jedem Drücken der Taste Hallo an das Terminal schreibt (Warnung: Sie müssen Ihre eigenen Zeilenumbrüche in die Ausgabezeichenfolgen einfügen!).
quelle
Alles, was Alex Warren schrieb, ist wahr. Wichtig ist hier, wie Electron gestartet wird. Wenn Sie das Standardskript in der Datei package.json verwenden, funktioniert es nicht.
console.log()
Ersetzen Sie das alte Skript durch das neue, damit es funktioniert.Altes:
Ein neues:
Jetzt werden alle
console.log()
Anrufe auch im Terminal angezeigt.quelle
Das benutze ich:
Anwendungsbeispiel (wie
console.log
):Quelle: https://github.com/fuse-box/fuse-box-electron-seed/tree/master/src/main in der Datei logger.js. Hier sehen Sie einen realen Anwendungsfall.
quelle
Nach einigen Nachforschungen hier mein Verständnis:
Code
(1) main.js
Hinweis: welche
openDevTools
zum öffnen verwendenElectron Dev Tools
(2) render.js
(3)
render.js
heißt:index.html
console.log
Ausgabelogik
main process
=NodeJS process
= hierElectron UI process
console.log
inmain.js
gibt das Protokoll hier ausrender process
console.log
inrender.js
gibt das Protokoll hier ausScreenshot Beispiel
./node_modules/.bin/electron .
eletron-builder
/path_to_your_packaged_mac_app/xxx.app/Contents/MacOS/yourBinaryExecutable
export ELECTRON_ENABLE_LOGGING=true
,render.js
console.log AUCH Ausgabe anmain process
Terminalquelle
Es tut uns leid, einen alten Thread zu erstellen, aber dies ist das Top-Ergebnis für "Ausgabe von console.log an Terminal" (oder ähnliche Suchvorgänge).
Für alle, die etwas mehr Kontrolle über die Ausgabe auf dem Terminal erlangen möchten, können Sie webContents.on ('Konsolennachricht') wie folgt verwenden:
Sehen:
webContents-Dokumentation
webContents-Eintrag in BrowserWindow-Dokumenten
quelle
console.log()
funktioniert gut für das Debuggen. Da daselectron
auf dem BrowserDevTools
basiert , bietet es Unterstützung, dass Sie devtools zum Debuggen verwenden können. Es gibt jedoch ein hysterisches Verhalten derconsole.log()
Methode. Wenn Sie den Anrufconsole.log()
ausmain process
den Elektronen App, gibt er an das Terminalfenster , von dem Sie nur die App gestartet und wenn Sie es aus rufenrenderer process
sie an die DevTools Konsole ausgibt.quelle
Mit diesem können Sie Entwicklertools des Hauptbrowserfensters verwenden, um Protokolle anzuzeigen
Das Beispiel
logEverywhere('test')
wird// test
im Konsolenfenster der Entwicklertools des Hauptbrowserfensters ausgegebenMöglicherweise müssen Sie diese Methode verbessern, um mehrere Argumente zu akzeptieren (Sie können dies mit dem Spread-Operator von es6 tun).
quelle
Nun, dies ist 2019 und ich kann nicht glauben, dass niemand diesen Trick in allen obigen Antworten erwähnt hat. Ok, wie wäre es, wenn Sie sich direkt von der Hauptkonsole aus direkt bei der Browserkonsole anmelden? Ich habe meine Antwort hier gegeben: https://stackoverflow.com/a/58913251/8764808 Schauen Sie mal rein.
quelle