Aquí está mi archivo principal (index.js):
const { app, BrowserWindow } = require("electron") var mainWindow = null app.on("ready", () => { mainWindow = new BrowserWindow({ "width": 500, "height": 500, "webPreferences": { "nodeIntegration": true, "contextIsolation": false } }) mainWindow.loadFile("src/html/welcome.html") })Ahora, no puedo usar la importación/exportación.
Cada vez que agrego una declaración de exportación debajo del código anterior, aparece un error que dice Uncaught TypeError: Cannot read properties of undefined (reading 'on')
Si elimino las líneas de exportación/importación, funciona bien, como se esperaba
(índice.js)
const { app, BrowserWindow } = require("electron") var mainWindow = null app.on("ready", () => { mainWindow = new BrowserWindow({ "width": 500, "height": 500, "webPreferences": { "nodeIntegration": true, "contextIsolation": false } }) mainWindow.loadFile("src/html/welcome.html") }) module.exports.updateFunction = (_name) => { console.log(_name) }otro.js
const { updateFunction } = require("../../index"); updateFunction("Hellow")Lo que creo que está sucediendo aquí es que estás creando una dependencia circular para ti mismo. Puede ser útil si intenta seguir el camino que está tomando (o tratando de tomar) el cargador de módulos al cargar sus módulos:
index.jsanother.js carga su módulo de punto de entrada index.js En este punto, index.js no está completamente cargado ya que todas sus dependencias deben cargarse primero. La dependencia circular deja el cargador de módulos en un estado indefinido, que dependiendo de su implementación puede resultar en todo tipo de errores. Por lo general, es a lo largo de las líneas de
some.stuff is not a function Cannot read property `XXX` of undefined `XXX` does not exist undefined index `#` of `XXX` Hay formas de sortear estos errores, pero el enfoque más sencillo es evitar las dependencias circulares. En su caso, probablemente sería más fácil crear un módulo desde el que tanto su another.js como su index.js puedan importar:
// someModule.js const { app, BrowserWindow } = require("electron") let mainWindow = null app.on("ready", () => { mainWindow = new BrowserWindow({ "width": 500, "height": 500, "webPreferences": { "nodeIntegration": true, "contextIsolation": false } }) mainWindow.loadFile("src/html/welcome.html") }) // you can export mainWindow if you need it module.exports.mainWindow = mainWindow; module.exports.updateFunction = (_name) => { console.log(_name) } // index.js const { mainWindow } = require('someModule'); // another.js const { updateFunction } = require("../../someModule"); updateFunction("Hellow")También recomendaría usar importaciones y exportaciones al estilo Es6, ya que son mucho más fáciles de comprender, pero esa es una historia diferente.