¿Cómo puedo registrar datos o mensajes en la consola en mi aplicación Electron?
Este hola mundo realmente básico abre las herramientas de desarrollo de forma predeterminada, por lo que no puedo usar console.log('hi'). ¿Existe una alternativa para 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()realizar el proceso principal desde el proceso del renderizador?./path/to/release/MyProgram.app/Contents/MacOS/MyProgram. Esto ejecutará el binarioMyProgramy le permitirá ver losconsole.logeventos del proceso en una terminal.app.relaunch()yapp.exit(0)???También puede agregar una variable de entorno en Windows:
Esto enviará mensajes de la consola a su terminal.
fuente
truey que establecerlo entrue"imprime el registro interno de Chrome en la consola", que no es lo que OP quiere.ELECTRON_ENABLE_LOGGING=1. Y en cuanto a lo que quiere el OP, ¿qué es entonces? Eche un vistazo a la siguiente esencia para ver el efecto.set ELECTRON_ENABLE_LOGGING=trueHay otra forma de iniciar sesión en la consola desde el interior del proceso de renderizado. Dado que esto es Electron, puede acceder a los módulos nativos de Node. Esto incluye el
consolemódulo.Cuando este código se ejecuta desde dentro del proceso de renderizado, accederá
Hello World!a la terminal desde la que ejecutó Electron.Consulte https://nodejs.org/api/console.html para obtener más documentación sobre el
consolemódulo.fuente
Otra posibilidad más es acceder a la consola de proceso principal usando
remote.getGlobal(name):fuente
ELECTRON_ENABLE_LOGGING=1(consulte la respuesta de deejbee)Agregando a la respuesta de M. Damian, así es como lo configuré para poder acceder a la consola del proceso principal desde cualquier renderizador.
En su aplicación principal, agregue:
En cualquier renderizador, puede agregar:
fuente
fuente
Puede utilizar el paquete npm electron-log https://www.npmjs.com/package/electron-log
Registrará su error, advertencia, información, detallado, depuración, salidas tontas en su registro de sistema operativo nativo.
fuente
Este es un seguimiento de la respuesta de cscsandy5 para obtener información adicional, información de aquí
Este código funciona muy bien para enviar un simple mensaje de depuración a la ventana de terminal desde la que inició la aplicación electron y es sobre lo que se construye console.log.
Aquí hay un fragmento de ejemplo (basado en el tutorial de tutorialspoint electon) de un script de jQuery que escribirá hola en el terminal cada vez que se presione el botón (advertencia: ¡debe agregar sus propios saltos de línea en las cadenas de salida!)
fuente
Todo lo que escribió Alex Warren es cierto. Aquí es importante cómo se inicia Electron. Si usa el script estándar en el archivo package.json , no funcionará. Para que
console.log()funcione, reemplace el antiguo script por este nuevo.El viejo:
Uno nuevo:
Ahora todas las
console.log()llamadas también se muestran en el terminal.fuente
Esto es lo que uso:
Uso de ejemplo (igual que
console.log):Fuente: https://github.com/fuse-box/fuse-box-electron-seed/tree/master/src/main en el archivo logger.js, aquí puede ver un caso de uso real.
fuente
Después de alguna investigación, aquí mi entendimiento:
Código
(1) main.js
Nota: que uso
openDevToolspara abrirElectron Dev Tools(2) render.js
(3)
render.jses llamado por:index.htmlconsole.logLógica de salida
main process=NodeJS process= aquíElectron UI processconsole.loginmain.jsdará salida al registro aquírender processconsole.loginrender.jsdará salida al registro aquíEjemplo de captura de pantalla
./node_modules/.bin/electron .eletron-builder/path_to_your_packaged_mac_app/xxx.app/Contents/MacOS/yourBinaryExecutableexport ELECTRON_ENABLE_LOGGING=true,render.jsconsole.log TAMBIÉN salida a lamain processterminalfuente
Perdón por levantar un hilo antiguo, pero este es el resultado principal de "cómo enviar console.log a la terminal" (o búsquedas similares.
Para cualquiera que busque obtener un poco más de control sobre lo que se envía al terminal, puede usar webContents.on ('console-message') así:
Ver:
WebContents Documentación
entrada webContents en los documentos de BrowserWindow
fuente
console.log()funcionará bien para la depuración. Comoelectronestá construido sobre el navegador, tieneDevToolssoporte, puede usar devtools con fines de depuración. Sin embargo, hay un comportamiento histérico deconsole.log()método. Cuando llame a la aplicaciónconsole.log()frommain processof electron, saldrá a la ventana de terminal desde donde acaba de iniciar la aplicación y cuando la llame desderenderer process, saldrá a la consola DevTools.fuente
Con esto, puede usar las herramientas de desarrollo de la ventana principal del navegador para ver los registros
El ejemplo
logEverywhere('test')aparecerá// testen el panel de la consola de las herramientas de desarrollo de la ventana principal del navegador.Es posible que necesite mejorar este método para aceptar múltiples argumentos (puede hacerlo con el operador de propagación por es6)
fuente
Bueno, esto es 2019 y no puedo creer que nadie haya mencionado este truco en todas las respuestas anteriores. Bien, entonces, ¿qué tal iniciar sesión directamente en la consola del navegador directamente desde la pantalla principal? Proporcioné mi respuesta aquí: https://stackoverflow.com/a/58913251/8764808 Eche un vistazo.
fuente