Inicialmente había estado usando electron stable (4.xx) y pude usar require tanto en mi navegador como en los procesos de representación. Actualicé a electron beta (5.0.0) porque necesitaba una versión más nueva de nodo y encontré este mensaje de error en mi proceso de renderizado, Uncaught ReferenceError: require is not defined .
Buscando en Google y revisando los documentos de electrones, encontré comentarios que decían que el error podría deberse al configurar webPreferences.nodeIntegration en falso al inicializar BrowserWindow ; por ejemplo: new BrowserWindow({width, height, webPreferences: {nodeIntegration: false}}); . Pero no estaba haciendo esto, así que pensé que el problema debía ser otro y continué buscando una solución.
Para Electron versión 12 y superior
const electron = require("electron"); const { app, BrowserWindow } = electron; app.on("ready", () => { const mainWindow = new BrowserWindow({ width: 1000, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false, enableRemoteModule: true, }, }); mainWindow.loadURL(`file://${__dirname}/index.html`); });Resulta que nodeIntegration era verdadero de forma predeterminada en versiones electrónicas anteriores, pero falso de forma predeterminada en 5.0.0. En consecuencia, establecerlo en verdadero resolvió mi problema. Al no encontrar este cambio documentado en línea en los comentarios o en la página de electrones, pensé en hacer esta publicación SO auto-respondida para que sea más fácil de encontrar para futuras personas que encuentren este problema.
Como dijo junvar , nodeIntegration ahora es falso por defecto en 5.0.0.
Las preguntas frecuentes de electronjs tienen un código de muestra sobre cómo establecer este valor.
let win = new BrowserWindow({ webPreferences: { nodeIntegration: true } }) win.show()