¿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 binarioMyProgram
y le permitirá ver losconsole.log
eventos 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
true
y 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=true
Hay 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
console
mó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
console
mó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
openDevTools
para abrirElectron Dev Tools
(2) render.js
(3)
render.js
es llamado por:index.html
console.log
Lógica de salida
main process
=NodeJS process
= aquíElectron UI process
console.log
inmain.js
dará salida al registro aquírender process
console.log
inrender.js
dará 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/yourBinaryExecutable
export ELECTRON_ENABLE_LOGGING=true
,render.js
console.log TAMBIÉN salida a lamain process
terminalfuente
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. Comoelectron
está construido sobre el navegador, tieneDevTools
soporte, 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 process
of 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á// test
en 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