Я довольно новичок в NodeJS, но у меня довольно большой опыт работы с vanilla JS.
В следующем коде, что именно я не так делаю здесь?
Этоне console.log
ничего в консоли разработчика приложения, поэтому я предполагаю, что канал связи каким-то образом нарушен?
Это как-то связано с тем, что readdir
является асинхронным?
index.js
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.html
const 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
})
Вот CODEPEN со ВСЕМ кодом.
Решение
Оказывается, обертка webContents.send
в другую функцию сделала свое дело.Однако я не уверен, почему это так.
mainWindow.webContents.on('did-finish-load', ()=>{
mainWindow.webContents.send('display', __dirname+'\\'+file)
})
Может быть, кто-нибудь захочет объяснить мне, почему я должен заключить webContents.send
в другую функцию, чтобы она работала правильно?