Estoy usando el modelo de reacción de electrones y quiero usar un cuadro de dialog de electrones en App.tsx:
const { dialog } = require('@electron/remote') //also tried with import const Hello = () => { const readFromFile = async () => { dialog.showOpenDialog({}) } return ( <> <button onClick={() => readFromFile()} >Test</button> </> ) }en main.ts coloqué la siguiente línea en la parte superior
require('@electron/remote/main').initialize()Al final siempre me sale este error:
Module not found: Error: Can't resolve 'fs' in 'C:\Users\myUsername\source\repos\electronTest\node_modules\electron' También probé nodeIntegration: true y contextIsolation: false
Verifique su webpack.config.js . Parece que tu target no es electron-main o electron-renderer .
Acabo de pasar un tiempo en esto y <despotricar sobre la comunidad JS> ... eh. Tal vez esto ayude a otros.
Solo puede usar las importaciones de electron-main .
El electrón se divide en electron-main y electron-renderer . Como sugirieron otros, debe actualizar la configuración del webpack con el target apuntando al electrón correcto.
En caso de que esté utilizando uno de los repetitivos del generador de electrones , es posible que vea el directorio .erb con algunas configuraciones de paquetes web. Especialmente, podría haber uno con target = "electron-main" y otro con target = ["web", "electron-renderer"] . Entonces se siente como una misión cumplida; sin embargo, de acuerdo con el documento del paquete web en el destino , si pasa una lista, se establece una configuración común. Dado que web no incluye fs , la parte común tampoco incluirá fs .
Por la razón anterior, algunas de las importaciones de electron , por ejemplo, el clipboard , solo se pueden usar desde el lado "electron-main" de su aplicación.
La solución alternativa, por ejemplo, usar el portapapeles en el lado de la aplicación, es usar IPC para comunicarse entre el lado main y el del renderer .