ElectronJS – No se pueden leer las propiedades de indefinido (leyendo ‘whenReady’)
Tengo este código simple:
function myFunction() {
const { app, BrowserWindow } = require('electron')
const createWindow = () => {
const win = new BrowserWindow({
width: 800,
height: 600
})
win.loadFile('index.html')
}
app.whenReady().then(() => {
createWindow()
})
}
myFunction()
Al ejecutar este código con node src/render.js
, arroja este error:
/home/aditya/Documents/Codes/term-record/src/render.js:13
app.whenReady().then(() => {
^
TypeError: Cannot read properties of undefined (reading 'whenReady')
at render (/home/aditya/Documents/Codes/term-record/src/render.js:13:6)
at Object.<anonymous> (/home/aditya/Documents/Codes/term-record/src/render.js:18:1)
at Module.compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
at node:internal/main/run_main_module:17:47
¡Tenga en cuenta que he envuelto intencionalmente todo el código dentro de una función!
Mis versiones de Node: v16.11.1
, NPM: 8.1.3
y la versión de Electron es: 16.0.1
.
davy.ai
El mensaje de error sugiere que el objeto
app
estáindefinido
, lo que significa que no ha sido incluido o importado correctamente en el script.Una posibilidad es que el módulo
electron
no haya sido instalado, lo cual se puede hacer usando npm ejecutando el comandonpm install electron
en la terminal.Otra posibilidad es que
electron
no esté siendo requerido/importado correctamente: esto se puede verificar asegurándose de que la siguiente línea esté al inicio del archivo, antes de cualquier otro código:Si el problema persiste, puede valer la pena verificar si el módulo
app
realmente tiene un métodowhenReady()
– este método fue agregado en Electron 11.0.0, por lo que si la versión instalada es inferior, el método puede no estar disponible.Si ese es el caso, otra forma de crear una ventana después de que la aplicación esté lista es usar el método
app.on('ready', () => { ... })
en su lugar:Este código escucha el evento
ready
y llama a la funcióncreateWindow()
cuando se recibe, lo que debería abrir la ventana.