Bagaimana saya bisa mencatat data atau pesan ke konsol di aplikasi Electron saya?
Halo dunia yang sangat mendasar ini membuka alat dev secara default, oleh saya tidak dapat menggunakan console.log('hi')
. Apakah ada alternatif untuk 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()
proses utama dari proses renderer?./path/to/release/MyProgram.app/Contents/MacOS/MyProgram
. Ini akan menjalankan binerMyProgram
dan memungkinkan Anda untuk melihatconsole.log
peristiwa proses di terminal.app.relaunch()
danapp.exit(0)
???Anda juga dapat menambahkan variabel lingkungan di windows:
Ini akan mengeluarkan pesan konsol ke terminal Anda.
sumber
true
dan bahwa pengaturan untuktrue
"cetakan logging internal yang Chrome untuk konsol", yang tidak apa yang diinginkan OP.ELECTRON_ENABLE_LOGGING=1
baik. Dan tentang apa yang diinginkan OP, lalu apa? Lihatlah inti berikut untuk melihat efeknya.set ELECTRON_ENABLE_LOGGING=true
Ada cara lain untuk masuk ke konsol dari dalam proses renderer. Mengingat ini adalah Electron, Anda dapat mengakses modul asli Node. Ini termasuk
console
modul.Ketika kode ini dijalankan dari dalam proses renderer, Anda akan masuk
Hello World!
ke terminal tempat Anda menjalankan Electron.Lihat https://nodejs.org/api/console.html untuk dokumentasi lebih lanjut tentang
console
modul.sumber
Namun kemungkinan lain adalah mengakses konsol proses utama menggunakan
remote.getGlobal(name)
:sumber
ELECTRON_ENABLE_LOGGING=1
(lihat jawabanMenambah jawaban M. Damian, berikut cara saya mengaturnya sehingga saya dapat mengakses konsol proses utama dari perender mana pun.
Di aplikasi utama Anda, tambahkan:
Di perender mana pun, Anda dapat menambahkan:
sumber
sumber
Anda dapat menggunakan electron-log paket npm https://www.npmjs.com/package/electron-log
Ini akan mencatat kesalahan Anda, memperingatkan, info, verbose, debug, keluaran konyol di log os asli Anda.
sumber
Ini adalah tindak lanjut jawaban cscsandy5 untuk beberapa informasi tambahan, info dari sini
Kode ini bekerja sangat baik untuk hanya mengeluarkan pesan debug sederhana ke jendela terminal tempat Anda meluncurkan aplikasi elektron dan dari situlah console.log dibangun di atasnya.
Berikut adalah contoh cuplikan (berdasarkan tutorial tutorialspoint electon) dari skrip jQuery yang akan menulis halo ke terminal setiap kali tombol ditekan (peringatan: Anda perlu menambahkan jeda baris Anda sendiri di string keluaran!)
sumber
Semua yang ditulis Alex Warren benar. Penting di sini adalah bagaimana Electron dimulai. Jika Anda menggunakan skrip standar di file package.json itu tidak akan berfungsi. Untuk membuat
console.log()
pekerjaan, ganti skrip lama dengan yang baru ini.Yang lama:
Baru:
Sekarang semua
console.log()
panggilan juga ditampilkan di terminal.sumber
Ini yang saya gunakan:
Contoh penggunaan (sama seperti
console.log
):Sumber: https://github.com/fuse-box/fuse-box-electron-seed/tree/master/src/main di file logger.js, di sini Anda dapat melihat kasus penggunaan yang sebenarnya.
sumber
Setelah beberapa penyelidikan, berikut pemahaman saya:
Kode
(1) main.js
Catatan: yang digunakan
openDevTools
untuk membukaElectron Dev Tools
(2) render.js
(3)
render.js
dipanggil oleh:index.html
console.log
Logika Keluaran
main process
=NodeJS process
= di siniElectron UI process
console.log
inmain.js
akan menampilkan log ke sinirender process
console.log
inrender.js
akan menampilkan log ke siniContoh Screenshot
./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 JUGA output kemain process
terminalsumber
Maaf mengangkat utas lama tetapi ini adalah hasil teratas untuk "cara mengeluarkan console.log ke terminal" (atau penelusuran serupa.
Bagi siapa pun yang ingin mendapatkan sedikit lebih banyak kendali atas apa yang output ke terminal, Anda dapat menggunakan webContents.on ('console-message') seperti:
Lihat:
webContents Documentation
webContents entri pada dokumen BrowserWindow
sumber
console.log()
akan bekerja dengan baik untuk debugging. Karenaelectron
dibangun di atas browser, ia memilikiDevTools
dukungan Anda dapat menggunakan devtools untuk tujuan debugging. Namun, ada perilakuconsole.log()
metode yang histeris . Ketika Anda memanggilconsole.log()
darimain process
aplikasi elektron, itu akan keluar ke jendela terminal dari mana Anda baru saja meluncurkan aplikasi dan ketika Anda memanggilnya darirenderer process
itu akan keluar ke konsol DevTools.sumber
Dengan ini Anda dapat menggunakan alat pengembang dari jendela Browser utama untuk melihat log
Contoh
logEverywhere('test')
akan menampilkan// test
panel konsol alat pengembang jendela browser utamaAnda mungkin perlu meningkatkan metode ini untuk menerima banyak argumen (Anda dapat melakukannya dengan operator penyebaran oleh es6)
sumber
Nah, ini tahun 2019 dan saya tidak percaya tidak ada yang menyebutkan trik ini di semua jawaban di atas. Oke, jadi, bagaimana kalau langsung masuk ke konsol browser langsung dari utama? Saya memberikan jawaban saya di sini: https://stackoverflow.com/a/58913251/8764808 Coba lihat.
sumber