Jak mogę rejestrować dane lub wiadomości na konsoli w mojej aplikacji Electron?
Ten naprawdę podstawowy świat hello otwiera domyślnie narzędzia programistyczne, których nie mogę używać console.log('hi')
. Czy istnieje alternatywa dla 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()
przejść do głównego procesu z procesu renderowania?./path/to/release/MyProgram.app/Contents/MacOS/MyProgram
. Spowoduje to uruchomienie pliku binarnegoMyProgram
i umożliwi przeglądanieconsole.log
zdarzeń procesu w terminalu.app.relaunch()
iapp.exit(0)
???Możesz także dodać zmienną środowiskową w systemie Windows:
Spowoduje to wyświetlenie komunikatów konsoli na twoim terminalu.
źródło
true
i ustawienie go natrue
„wydruki wewnętrzne rejestrowanie Chrome do konsoli”, który nie jest tym, co PO chce.ELECTRON_ENABLE_LOGGING=1
również z. A co do tego, czego chce PO? Spójrz na następującą istotę, aby zobaczyć efekt.set ELECTRON_ENABLE_LOGGING=true
Istnieje inny sposób logowania się do konsoli z wnętrza procesu renderowania. Biorąc pod uwagę, że jest to Electron, możesz uzyskać dostęp do natywnych modułów Node. Obejmuje to
console
moduł.Kiedy ten kod jest uruchamiany z wnętrza procesu renderowania, otrzymasz
Hello World!
terminal, z którego uruchomiłeś Electron.Więcej dokumentacji na temat modułu można znaleźć pod adresem https://nodejs.org/api/console.html
console
.źródło
Jeszcze inną możliwością jest dostęp do głównej konsoli procesu za pomocą
remote.getGlobal(name)
:źródło
ELECTRON_ENABLE_LOGGING=1
(zobacz odpowiedźDodając do odpowiedzi M. Damiana, oto jak to skonfigurowałem, abym mógł uzyskać dostęp do konsoli głównego procesu z dowolnego renderera.
W swojej głównej aplikacji dodaj:
W każdym rendererze możesz dodać:
źródło
źródło
Możesz skorzystać z pakietu npm electron-log https://www.npmjs.com/package/electron-log
Będzie rejestrować twój błąd, ostrzegać, informować, rozwiązywać, debugować, głupie dane wyjściowe w twoim natywnym dzienniku systemu operacyjnego.
źródło
To jest kontynuacja odpowiedzi cscsandy5 na dodatkowe informacje, informacje stąd
Ten kod działa świetnie po prostu wyprowadzając prosty komunikat debugowania do okna terminala, z którego uruchomiłeś aplikację electron, i jest tym, na podstawie którego zbudowany jest console.log.
Oto przykładowy fragment (oparty na tutorialspoint electon tutorial) skryptu jQuery, który zapisze cześć do terminala za każdym razem, gdy przycisk zostanie naciśnięty (ostrzeżenie: musisz dodać własne podziały wierszy w łańcuchach wyjściowych!)
źródło
Wszystko napisał Alex Warren, jest prawdą. Tutaj ważne jest, jak uruchamia się Electron. Jeśli użyjesz standardowego skryptu w pliku package.json , to nie zadziała. Robić
console.log()
pracować, zamień stary skrypt na nowy.Stary:
Nowy:
Teraz wszystkie
console.log()
połączenia są również wyświetlane w terminalu.źródło
Oto, czego używam:
Przykładowe zastosowanie (tak samo jak
console.log
):Źródło: https://github.com/fuse-box/fuse-box-electron-seed/tree/master/src/main w pliku logger.js, tutaj możesz zobaczyć prawdziwy przypadek użycia.
źródło
Po pewnym dochodzeniu, oto moje zrozumienie:
Kod
(1) main.js
Uwaga: którego użyć
openDevTools
do otwarciaElectron Dev Tools
(2) render.js
(3)
render.js
jest wywoływany przez:index.html
console.log
Logika wyjściowa
main process
=NodeJS process
= tutajElectron UI process
console.log
inmain.js
wyświetli tutaj logrender process
console.log
inrender.js
wyświetli tutaj logPrzykład zrzutu ekranu
./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 TAKŻE wyjście domain process
terminalaźródło
Przepraszam, że podnoszę stary wątek, ale to jest najlepszy wynik dla zapytania „jak przesłać plik console.log do terminala” (lub podobnych wyszukiwań.
Dla każdego, kto chce uzyskać nieco większą kontrolę nad tym, co jest wyświetlane na terminalu, możesz użyć webContents.on ('komunikat konsoli') w następujący sposób:
Widzieć:
webContents Dokumentacja
webContents w dokumentacji BrowserWindow
źródło
console.log()
będzie działać dobrze do debugowania. Ponieważelectron
jest zbudowany w oparciu o przeglądarkę,DevTools
obsługuje narzędzia programistyczne do debugowania. Istnieje jednak histeryczne zachowanieconsole.log()
metody. Gdy wywołasz aplikacjęconsole.log()
frommain process
electron app, zostanie ona wyświetlona w oknie terminala, z którego właśnie uruchomiłeś aplikację, a po wywołaniu jej zrenderer process
niej wyświetli się na konsoli DevTools.źródło
Dzięki temu możesz użyć narzędzi programistycznych w głównym oknie przeglądarki, aby wyświetlić dzienniki
Przykład
logEverywhere('test')
pojawi się// test
w panelu konsoli narzędzi programistycznych głównego okna przeglądarkiMożesz potrzebować ulepszenia tej metody, aby akceptować wiele argumentów (możesz to zrobić za pomocą operatora spreadu za pomocą es6)
źródło
Cóż, to rok 2019 i nie mogę uwierzyć, że nikt nie wspomniał o tej sztuczce we wszystkich powyższych odpowiedziach. Ok, a co powiesz na zalogowanie się bezpośrednio do konsoli przeglądarki bezpośrednio z głównej? Podałem moją odpowiedź tutaj: https://stackoverflow.com/a/58913251/8764808 Spójrz.
źródło