1
resposta

Não consigo abrir nova janela se utilizado Electron atualizado.

Após a atualização do Electron para novas versões, não consegui implementar um código que abre a nova janela sobre utilizando ipcMain.

Uma configuração mudou seu padrão por motivos de segurança, porém quebra o código para abrir novas janelas da maneira ensinada pelo curso e não consegui resolver.

Creio que seja devido aos novos valores default de dois parametros: nodeIntegration e contextIsolation

Mensagem exibida na nova versão: The default of contextIsolation is deprecated and will be changing from false to true in a future release of Electron

MAIN.JS

const { app, BrowserWindow, ipcMain }  = require('electron');

app.on('ready', () => {
    console.log('Aplicacão iniciada');
    let mainWindow = new BrowserWindow({
        width: 600,
        height: 400
    });

    mainWindow.loadURL(`file://${__dirname}/app/index.html`);

});

app.on('window-all-closed', () => {
    app.quit();
});

ipcMain.on('abrir-janela-sobre', () => {
    let sobreWindow = new BrowserWindow({
        width: 300,
        height: 220
    });
    sobreWindow.loadURL(`file://${__dirname}/app/sobre.html`);
});

INDEX.HTML

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Alura Timer</title>
    <link rel="stylesheet" href="css/index.css">
</head>
<body>
    <h1>Olá sou uma Janela do ELECTRONNNN!</h1>

    <a href="#" id="link-sobre">Sobre</a>

    <script src="js/renderer.js"></script>
</body>
</html>

RENDERER.JS

console.log('Eu estou na Janela do Browser');


const { ipcRenderer } = require('electron');

let linkSobre = document.querySelector('#link-sobre');

linkSobre.addEventListener('click', function() {
    ipcRenderer.send('abrir-janela-sobre');
});

SOBRE.HTML


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Sobre o Alura Timer</title>
</head>
<body>
    <p>O Alura timer é para você guardar seus tempos de estudo na Alura.</p>
</body>
</html>
1 resposta

Fala ai André, tudo bem? Olhando a documentação parece que o ipcMain ainda funciona de forma igual: https://www.electronjs.org/docs/api/ipc-main junto com o ipcRenderer: https://www.electronjs.org/docs/api/ipc-renderer

E a BrowserWindow ainda também: https://www.electronjs.org/docs/api/browser-window

Espero ter ajudado.