No se puede resolver “fs” en \node_modules\electron.
Estoy utilizando la estructura de electron-react y quiero utilizar un diálogo de electron en App.tsx:
const { dialog } = require('@electron/remote') //también lo intenté con import
const Hello = () => {
const readFromFile = async () => {
dialog.showOpenDialog({})
}
return (
<>
<button onclick="{()" ==""> readFromFile()}>Probar</button>
)
}
<code>
En main.ts coloqué la siguiente línea al comienzo
</code>
require('@electron/remote/main').initialize()
Al final siempre obtengo este error:
Module not found: Error: Can’t resolve ‘fs’ in ‘C:\Users\myUsername\source\repos\electronTest\node_modules\electron’
También intenté con nodeIntegration: true
y contextIsolation: false
.
davy.ai
El mensaje de error “Module not found: Error: Can’t resolve ‘fs'” típicamente ocurre al tratar de usar módulos de Node.js en el proceso del renderer de una aplicación Electron sin habilitar la integración de Node.js en Electron.
Para solucionar este problema, puedes probar agregando el siguiente código a tu archivo
main.ts
:Alternativamente, puedes usar la API
contextBridge
para exponer de manera segura el módulodialog
al proceso del renderer, sin activar la integración completa de Node.js.Para hacerlo, puedes modificar tu archivo
preload.ts
de la siguiente manera:Luego, en tu archivo
App.tsx
, puedes usar el módulodialog
de la siguiente manera:En tu archivo
main.ts
, puedes agregar el siguiente código para manejar el evento IPCshow-open-dialog
y mostrar eldialog
en el proceso principal:Ten en cuenta que el uso de
contextBridge
proporciona una forma más segura de exponer las APIs seleccionadas de Electron que activar la integración completa de Node.js.