Como posso registrar dados ou mensagens no console do meu aplicativo Electron?
Este Hello World realmente básico abre as ferramentas de desenvolvimento por padrão, mas não consigo usar console.log('hi')
. Existe uma alternativa para o 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()
processar o processo principal do processo de renderização?./path/to/release/MyProgram.app/Contents/MacOS/MyProgram
. Isso executará o binárioMyProgram
e permitirá que você visualize osconsole.log
eventos do processo em um terminal.app.relaunch()
eapp.exit(0)
???Você também pode adicionar uma variável de ambiente no Windows:
Isso irá gerar mensagens de console para o seu terminal.
fonte
true
e que defini-lo comotrue
"imprime o registro interno do Chrome no console", o que não é o que o OP deseja.ELECTRON_ENABLE_LOGGING=1
. E quanto ao que o OP quer, o que é então? Dê uma olhada na essência a seguir para ver o efeito.set ELECTRON_ENABLE_LOGGING=true
Existe outra maneira de fazer logon no console de dentro do processo de renderização. Dado que este é o Electron, você pode acessar os módulos nativos do Node. Isso inclui o
console
módulo.Quando este código é executado de dentro do processo de renderização, você obterá
Hello World!
o terminal a partir do qual executou o Electron.Consulte https://nodejs.org/api/console.html para obter mais documentação sobre o
console
módulo.fonte
Outra possibilidade é acessar o console de processo principal usando
remote.getGlobal(name)
:fonte
ELECTRON_ENABLE_LOGGING=1
(veja a resposta de deejbee)Somando-se à resposta de M. Damian, aqui está como eu configurei para poder acessar o console do processo principal de qualquer renderizador:
em seu aplicativo principal, adicione:
em qualquer renderizador, você pode adicionar:
fonte
fonte
Você pode usar o pacote npm electron-log https://www.npmjs.com/package/electron-log
Ele irá registrar seu erro, aviso, informações, verbose, depuração, saídas bobas em seu log do sistema operacional nativo.
fonte
Esta é uma continuação da resposta de cscsandy5 para algumas informações adicionais, informações aqui
Este código funciona muito bem apenas para enviar uma mensagem de depuração simples para a janela do terminal a partir da qual você iniciou o aplicativo electron e é sobre o que console.log é construído.
Aqui está um trecho de exemplo (baseado em tutorialspoint electon tutorial) de um script jQuery que escreverá olá para o terminal toda vez que o botão for pressionado (aviso: você precisa adicionar suas próprias quebras de linha nas strings de saída!)
fonte
Tudo o que Alex Warren escreveu é verdade. Importante aqui é como o Electron é iniciado. Se você usar o script padrão no arquivo package.json, ele não funcionará. Para fazer
console.log()
funcionar, substitua o script antigo por este novo.Antigo:
Novo:
Agora, todas as
console.log()
chamadas são exibidas no terminal também.fonte
Isso é o que eu uso:
Exemplo de uso (igual a
console.log
):Fonte: https://github.com/fuse-box/fuse-box-electron-seed/tree/master/src/main no arquivo logger.js, aqui você pode ver um caso de uso real.
fonte
Após alguma investigação, aqui está o meu entendimento:
Código
(1) main.js
Nota: que use
openDevTools
para abrirElectron Dev Tools
(2) render.js
(3)
render.js
é chamado por:index.html
console.log
Saída Lógica
main process
=NodeJS process
= aquiElectron UI process
console.log
emmain.js
irá gerar o log para aquirender process
console.log
emrender.js
irá gerar o log para aquiExemplo de captura de tela
./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 TAMBÉM saída para omain process
terminalfonte
Desculpe levantar um tópico antigo, mas este é o principal resultado para "como enviar console.log para o terminal" (ou pesquisas semelhantes.
Para quem deseja obter um pouco mais de controle sobre o que é enviado para o terminal, você pode usar webContents.on ('console-message') assim:
Vejo:
Documentação webContents
entrada webContents nos documentos do BrowserWindow
fonte
console.log()
funcionará bem para depuração. Como oelectron
é construído em cima do navegador, ele temDevTools
suporte para você usar devtools para fins de depuração. No entanto, existe um comportamento histérico doconsole.log()
método. Quando você chama o aplicativoconsole.log()
frommain process
do electron, ele será enviado para a janela do terminal de onde você acabou derenderer process
iniciar o aplicativo e, quando você chamá- lo, será enviado para o console do DevTools.fonte
Com isso, você pode usar as ferramentas de desenvolvedor da janela principal do navegador para ver os logs
O exemplo
logEverywhere('test')
será gerado// test
no painel do console das ferramentas de desenvolvedor da janela principal do navegadorVocê pode precisar aprimorar este método para aceitar vários argumentos (você pode fazer isso com o operador spread por es6)
fonte
Bem, estamos em 2019 e não acredito que ninguém mencionou esse truque em todas as respostas acima. Ok, então, que tal fazer login diretamente no console do navegador diretamente do principal? Forneci minha resposta aqui: https://stackoverflow.com/a/58913251/8764808 Dê uma olhada.
fonte