Uso nextron estándar (Next + electron.js) para iniciar mi proyecto ( https://github.com/saltyshiomix/nextron )
En un caso particular, necesito leer un archivo template.html a variable (String). así que creo que fs.readFileSync()
Cuando utilizo import fs from "fs" , el compilador se queja de que fs no está disponible. (consulte este módulo no encontrado: no se puede resolver 'fs' en la aplicación Next.js )
La respuesta aceptada en ese hilo, me recomienda actualizar el archivo next.config.js en:
/// I need this to load image from static files const withImages = require('next-images') module.exports = withImages({ webpack: (config, { isServer }) => { // Fixes npm packages that depend on `fs` module if (!isServer) { config.node = { fs: 'empty' } } return config } })Pero la solución no funciona para mí.
import fs from 'fs' const generatePDF = () => { let content = fs.readFileSync("./template.html") }¿Qué pasa aquí?
Creo que el problema es que está intentando usar el módulo fs (que es el módulo nativo de node.js) en el lado del cliente. El cambio del paquete web que ha agregado le dice al paquete web que ignore el módulo fs para el cliente (o lo reemplace con el código auxiliar), pero aún está tratando de usarlo.
Una forma de solucionar esto es representar su componente solo en el lado del servidor. Lea esta documentación: https://nextjs.org/docs/advanced-features/react-18/server-components
Honestamente, generalmente es una mala idea intentar leer archivos/plantillas en el lado del cliente.
Pero si realmente necesita obtener ese html en el cliente, le recomiendo crear una API que lea html en el servidor y lo devuelva como una cadena. Luego puede insertarlo en el DOM como html inseguro. Esto no requerirá concentrarse con módulos de nodos nativos.
Espero que esto ayude.