Después de crear una aplicación electrónica con
npm install create-electron-app -g create-electron-app "Electron App"se agregó un detector de eventos a index.html colocando esta etiqueta de secuencia de comandos al final del cuerpo.
<script> const electron = require("electron"); const ipcRenderer = electron.ipcRenderer; ipcRenderer.on('cpu', (event,data) => {// This isn't picking up the sent data. console.log('data is: ' + data); }); </script>Con el siguiente js para iniciar la aplicación
const { app, BrowserWindow } = require('electron'); const path = require('path'); const os = require('os-utils'); // irrelevant code left out const createWindow = () => { const mainWindow = new BrowserWindow({ width: 1000, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false } }); mainWindow.loadFile(path.join(__dirname, 'index.html')); mainWindow.webContents.openDevTools(); os.cpuUsage(function(v){ console.log(v*100); mainWindow.webContents.send('cpu', v*100);// this should send this information to the webpage's ipcRenderer. }); }; app.on('ready', createWindow); No pasa nada después de iniciar la aplicación. La consola de desarrollo se abre, pero no se registran datos en la consola desde esta línea: console.log('data is: ' + data);
Intenté envolver el os.cpuUsage(…) un oyente que espera a que se cargue toda la página, como se sugirió en esta respuesta
mainWindow.webContents.on('did-finish-load', ()=>{ os.cpuUsage(function(v){ console.log(v*100); mainWindow.webContents.send('cpu', v*100);// this should send this information to the webpage's ipcRenderer. }) }); También verifiqué si .on realmente está creando un detector de eventos agregando
console.log(ipcRenderer.listenerCount())hasta el final de la etiqueta del script. registró '0'
También intenté cambiar ipcRenderer.on a ipcRenderer.once sin cambios en el comportamiento.
Además, agregué estas líneas de console.log después de las declaraciones const en la etiqueta <script> :
console.log('test') console.log(electron) console.log(ipcRenderer)Estos fueron registrados con éxito.