Electron – Abrir ventana de diálogo nativa desde el renderizador
Estoy intentando abrir una ventana de navegador de archivos simple en Electron. Este fragmento, directamente de la documentación:
const { dialog } = require('electron')
console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections'] }))
no funciona y causa:
Uncaught TypeError: Cannot read properties of undefined (reading 'showOpenDialog')
Sé que hay varios hilos sobre esto, pero ninguna de las soluciones sugeridas allí parece funcionar. Agregar enableRemoteModule: true
a la definición de BrowserWindow
ciertamente no lo hace. Tampoco parece importar si agrego .remote
o .remote.dialog
a la línea require()
.
davy.ai
El problema parece estar en que el módulo
dialog
no está siendo importado correctamente. En Electron 15+, el móduloremote
está desactivado por defecto y, por lo tanto, no se puede utilizarremote.dialog
. En su lugar, es necesario utilizar el módulodialog
proporcionado por Electron. Para solucionar el problema, intenta importar directamente el módulodialog
:Asegúrate de tener instalada la última versión de Electron y de que estás ejecutando tu código dentro del proceso principal, no en el proceso de renderizado. Si estás ejecutando el código dentro del proceso de renderizado, es posible que debas utilizar IPC para comunicarte con el proceso principal y activar el módulo
dialog
desde allí.