webContents.send e ipcRenderer.on no funciona
Soy bastante nuevo en NodeJS, pero tengo bastante experiencia con Vanilla JS.
En el siguiente código, ¿qué estoy haciendo exactamente mal aquí?
Noconsole.log
cualquier cosa en la consola de desarrollador de la aplicación, ¿así que supongo que el canal de comunicación está roto de alguna manera?
Tiene algo que ver con el hecho de quereaddir
es asíncrono?
fs.readdir(__dirname, (err, files)=>{
files.forEach((file, index)=>{
console.log('display', __dirname+'\\'+file) // this prints everything as expected
mainWindow.webContents.send('display', __dirname+'\\'+file)
// mainWindow.send(...) doesn't work either
})
})
index.htmlconst electron = require('electron')
const {ipcRenderer} = electron
const con = document.getElementById('con')
ipcRenderer.on('display', (e, arg)=>{
const div = document.createElement('div')
const txt = document.createTextNode(arg)
div.appendChild(txt)
con.appendChild(div)
console.log(e) // neither this
console.log(arg) // nor this prints anything to the app's developer console
})
Aquí hay una CODEPEN con TODO el código.
Solució Resulta envolverwebContents.send
en otra función hizo el truco. Sin embargo, no estoy seguro de por qué este es el caso.
mainWindow.webContents.on('did-finish-load', ()=>{
mainWindow.webContents.send('display', __dirname+'\\'+file)
})
¿Alguien querría explicarme por qué tengo que envolverwebContents.send
dentro de otra función para que funcione correctamente?