Estoy creando mi propio proyecto (sitio web) y estoy tratando de crear una función renderTemplate para devolver archivos HTML, pero no sé cómo devolver datos del archivo.
Aquí hay un ejemplo rápido de lo que estoy haciendo.
var file = require("fs") const render = () => { file.readFile(`file.txt`, {encoding: "utf-8"}, (err, data) => { if (err) throw err return data }) } console.log(render()) Me aseguré de que el archivo.txt exista, ejecuté el código y no se undefined en la salida
Porque render no devuelve nada, y no puede devolver nada ya que está utilizando la versión asincrónica basada en devolución de llamada de readFile .
O usas la versión de sincronización:
const fs = require("fs") const render = () => fs.readFileSync(`file.txt`, {encoding: "utf-8"}) console.log( render() )O usa una versión asincrónica basada en promesas que es mejor si tiene varias lecturas:
const fs = require("fs") const render = () => fs.readFileAsync(`file.txt`, {encoding: "utf-8"}) render().then( data => console.log(data) )Como no hay retorno en su función, devuelve indefinido. Puedes probar readFileSync
Ejemplo:
const render = () => file.readFileSync("file.txt" , { encoding: "utf-8" }); console.log(render())o
const render = () => { return new Promise((resolve, reject) => { file.readFile(`file.txt`, { encoding: "utf-8" }, (err, data) => { if (err) reject(err); resolve(data); }); }); }; render().then(console.log)