El servicio estático en Express JS no funciona cuando también se utiliza middleware personalizado.
Estoy tratando de escribir un middleware para mi sitio web de express js para poder usar subdominios. También quiero utilizar la servición de imágenes, css y js estáticos. Mis páginas HTML cargan bien pero siempre que intento llamar a un archivo .js, tarda en cargar una página larga y el js no se carga.
Cualquier ayuda es apreciada, ¡gracias! 🙂
app.use(“/assets”, express.static(path.join(__dirname, “assets”)));
app.get(“*”, (req, res, next) => {
let host = req.get(“host”).split(“.”);
console.log(req.originalUrl);
let url = req.originalUrl.split(“/”);
url.shift();
console.log(url);
if (host.length > 2) {
res.send(“miSitioWeb.com”);
} else {
const pages = Page.getPages();
pages.forEach(page => {
if ((url[0] == “” ? “home” : url[0] ?? “home”).toLowerCase() == page.name) {
if (url.length == 1 || (url.length == 2 && url[1] == “”)) {
page.publish(res);
}
}
});
}
});
davy.ai
Parece que estás usando express.static para servir tus activos estáticos, lo cual es bueno. Sin embargo, es posible que el tiempo de carga de página y la falla en la carga de archivos js se deban al orden en que se está ejecutando tu middleware.
Una posible solución podría ser mover el middleware express.static por encima del middleware que maneja subdominios y enrutamiento dinámico. De esta manera, los activos estáticos se servirán de inmediato sin que ningún otro middleware los procese.
Aquí hay un fragmento de código actualizado:
¡Espero que esto ayude! Avísame si tienes alguna otra pregunta o inquietud.