> Faqs > Como crear rutas a archivos en Electron para que funcionen cuando se ejecuta la app producida

Como crear rutas a archivos en Electron para que funcionen cuando se ejecuta la app producida

Tengo una aplicación que estoy desarrollando en ElectronJS.

El tema es que trabajo con un archivo de texto que he colocado en una carpeta de la aplicación. Al trabajar con la app en modo desarrollo el archivo se puede abrir perfectamente, pero al trabajar en modo producción el archivo no se abre y me sale un error.

Tengo este código en Node:

const filePath = path.resolve('./data/text.txt');

const getText = (event) => {
  return new Promise( (resolve, reject) => {
    readFile(filePath, 'utf8', (err, text) => {
      if (err) { 
        reject(err);
      }
      resolve(text);
    })
  });
}

El intento de hacer la lectura del archivo falla y se va por la parte del reject de la promesa. ¿Cómo lo puedo solucionar?

Respuestas

Intenta devolver al Javascript y mostrar en la web la ruta generada en caso de error... así podrás ver cómo se genera esa ruta cuando estás en modo producción.

const getText = (event) => {
  return new Promise( (resolve, reject) => {
    readFile(filePath, 'utf8', (err, text) => {
      if (err) { 
        reject(filePath);
      }
      resolve(text);
    })
  });
}

De todos modos, lo normal es que uses el __dirname cuando estás creando la ruta, para que te tome la ruta relativa al archivo que estás trabajando en este momento.

Puedes probar a crear la ruta de esta manera:

const filePath = path.resolve(__dirname, '../data/text.txt');

Así estás creando la ruta relativa al módulo actual y no dependerá de dónde está el archivo de la app.

De todos modos, el módulo path de NodeJS ofrece muchas utilidades para resolver rutas que quizás puedes revisar, si es que esto no soluciona tu problema. Lee el artículo de módulo path en node.js que quizás te aclare algunas cosas que puedan venirte bien en tu caso.

Miguel Angel
3295 146 215 17